实验报告

架构设计

1.部署MHA+mysql主从,实现数据读写分离及集群高可用

2.部署nginx+keepalived主从,实现主nginx故障从nginx转换为新主

3.部署nginx+php+mysql集群,实现php通过代码连接主节点和从节点,验证是否可以成功连接

4.部署nginx反向代理tomcat并验证

5.部署redis集群

1.部署MHA+mysql主从,实现数据读写分离及集群高可用

[root@localhost ~]# ssh-keygen

 

[root@localhost ~]# ssh-copy-id root@192.168.1.2

 yes  123.com

[root@localhost ~]# ssh root@192.168.2.20  

Last login: Sun Aug 30 23:41:11 2020

[root@localhost ~]# exit   

登出

Connection to 192.168.2.20 closed.

[root@localhost ~]# ssh-copy-id root@192.168.2.30

ssh-copy-id root@192.168.2.30

ssh root@192.168.2.30

exit

ssh-copy-id root@192.168.2.40

ssh root@192.168.2.40

exit

 

 

 

 

其它主机同上

后三台

[root@localhost ~]# yum -y install mariadb*

mariadb的主:

[root@localhost ~]# vim /etc/my.cnf

server-id=1

log-bin=mysql-bin

重启服务

[root@localhost ~]# systemctl restart mariadb

[root@localhost ~]# mysql -uroot -p

MariaDB [(none)]> set password=password("123.com");

进入数据库授权

MariaDB [(none)]> grant replication slave on *.* to "slave"@"192.168.1.%" identified by "123.com";

MariaDB [(none)]> grant all on *.* to "mha"@"192.168.1.%" identified by "123.com";

MariaDB [(none)]> flush privileges;

MariaDB [(none)]> show master status\G

 

mariadb从1

[root@localhost ~]# vim /etc/my.cnf

server-id=2

log-bin=mysql-bin

relay-log=relay-log-bin

relay-log-purge=0   

read-only=1        

[root@localhost ~]# systemctl restart mariadb

[root@localhost ~]# mysql -uroot -p

MariaDB [(none)]> set password=password("123.com");

MariaDB [(none)]> grant replication slave on *.* to "slave"@"192.168.1.%" identified by "123.com";

MariaDB [(none)]>  grant all on *.* to "mha"@"192.168.1.%" identified by "123.com";

MariaDB [(none)]> flush privileges;

MariaDB[(none)]>changemasterto master_host="192.168.1.2",master_user="slave",master_password="123.com",master_log_file="mysql-bin.000003",master_log_pos=750;

MariaDB [(none)]> start slave;

MariaDB [(none)]> show slave status\G

 

mariadb从2

[root@localhost ~]# vim /etc/my.cnf

server-id=3

log-bin=mysql-bin

relay-log=relay-log-bin

relay-log-purge=0   

read-only=1        

[root@localhost ~]# systemctl restart mariadb

[root@localhost ~]# mysql -uroot -p

MariaDB [(none)]> set password=password("123.com");

MariaDB [(none)]> grant replication slave on *.* to "slave"@"192.168.2.%" identified by "123.com";

MariaDB [(none)]>  grant all on *.* to "mha"@"192.168.2.%" identified by "123.com";

MariaDB [(none)]> flush privileges;

MariaDB [(none)]> change master to master_host="192.168.2.20",master_user="slave",master_password="123.com",master_log_file="mysql-bin.000003",master_log_pos=750;

MariaDB [(none)]> start slave;

MariaDB [(none)]> show slave status\G

连接成功

 

安装mha

四台

wget -O /etc/yum.repos.d/CentOS-Base.repo ​​​​​​http://mirrors.aliyun.com/repo/Centos-7.repo

 

[root@localhost ~]# yum -y install perl-DBD-mysql perl-DBI perl-Config-Tiny perl-Log-Dispatch perl-Parallel-ForkManager

如果出现yum睡眠

rm   -rf   /var/run/yum.pid

[root@localhost ~]# rpm -ivh mha4mysql-node-0.56-0.el6.noarch.rpm

 

没有mariadb  第一台

[root@localhost ~]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

[root@localhost ~]# yum -y install perl-DBD-mysql perl-DBI perl-Config-Tiny perl-Log-Dispatch perl-Parallel-ForkManager

[root@localhost ~]# rpm -ivh mha4mysql-manager-0.56-0.el6.noarch.rpm

第一台管理节点

[root@localhost ~]# mkdir /etc/mha

[root@localhost ~]# vim /etc/mha/mha.cnf

[server default]  

user=mha    

password=123.com   

ssh_user=root   

repl_user=slave   

repl_password=123.com   

ping_interval=1   

master_ip_failover_script=/usr/bin/master_ip_failover   

manager_workdir=/var/mha   

manager_log=/var/mha/manager.log   

[server1]   

hostname=192.168.2.20   

ssh_port=22   

master_binlog_dir=/var/lib/mysql   

[server2]

hostname=192.168.2.30   

ssh_port=22

candidate_master=1   

master_binlog_dir=/var/lib/mysql

[server3]

hostname=192.168.2.40   

ssh_port=22

no_master=1   

master_binlog_dir=/var/lib/mysql

vim /usr/bin/master_ip_failover   添加:

 

hmod a+x /usr/bin/master_ip_failover

检测mha的管理节点和后端mariadb节点ssh是否正常

masterha_check_ssh --conf=/etc/mha/mha.cnf

 

mariadb主

[root@localhost ~]# ip a

2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000

    link/ether 00:0c:29:80:01:0f brd ff:ff:ff:ff:ff:ff

    inet 192.168.2.20/24 brd 192.168.2.255 scope global noprefixroute ens33

       valid_lft forever preferred_lft forever

inet 192.168.2.200/24

从1:

 

 

Nginx+keepalived1:

安装nginx

root@localhost ~]# tar -zxf nginx-1.11.5.tar.gz

[root@localhost ~]# cd nginx-1.11.5/

[root@localhost nginx-1.11.5]#  yum -y install gcc* pcre pcre-devel openssl-devel openssl zlib zlib-devel

[root@localhost nginx-1.11.5]#  useradd -M -s /sbin/nologin nginx

[root@localhost nginx-1.11.5]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module --with-http_ssl_module && make && make install #编译安装

[root@localhost nginx-1.11.5]#  ln -s /usr/local/nginx/sbin/* /usr/local/sbin/

[root@localhost nginx-1.11.5]# nginx #启动服务

[root@localhost nginx-1.11.5]#  netstat -anput | grep nginx

 

 

 

安装keepalived:

#yum -y install popt-devel kernel-devel openssl openssl-devel

# tar -zxf keepalived-1.2.13.tar.gz

# cd keepalived-1.2.13/

#./configure --prefix=/ --with-kernel-dir=/usr/src/kernel && make && make install

# vim /etc/keepalived/keepalived.conf #修改配置文件,改完将下面的全部删除

 [root@localhost ~]# vim /etc/keepalived/check_nginx.sh

 

Nginx+keepalived2:

安装nginx

[root@localhost ~]#  tar -zxf nginx-1.11.5.tar.gz

[root@localhost ~]#  cd nginx-1.11.5/

[root@localhost nginx-1.11.5]# yum -y install gcc* pcre pcre-devel openssl-devel openssl zlib zlib-devel

[root@localhost nginx-1.11.5]#  useradd -M -s /sbin/nologin nginx

[root@localhost nginx-1.11.5]#  ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module --with-http_ssl_module && make && make install

[root@localhost nginx-1.11.5]#  ln -s /usr/local/nginx/sbin/* /usr/local/sbin/

[root@localhost nginx-1.11.5]#  nginx  #启动服务

[root@localhost nginx-1.11.5]#

 

 

 

 

 

 

 

 

 

3.部署nginx+php+mysql集群,实现php通过代码连接主节点和从节点,验证是否可以成功连接

安装PHP:

yum -y install gd libxml2-devel.x86_64 libpng-devel.x86_64 libjpeg-turbo-devel.x86_64 libXpm-devel.x86_64 pcre-devel

把那三个文件拖进来

 

配置编译安装:

./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php --with-gd --with-zlib --with-jpeg-dir=/usr/lib --with-png-dir=/usr/lib --with-mysql=mysqlnd --with-mysqli=mysqlnd --enable-fpm --enable-mbstring && make && make install

 

  1. 复制主配置文件,路径优化

cp php.ini-development /usr/local/php/php.ini

ln -s /usr/local/php/bin/* /usr/local/bin/

  1. 修改配置文件

202 short_open_tag = On

680 default_charset ="UTF-8”

第一种请求

 

客户端访问

第二种请求

编辑: vim /usr/local/httpd/conf/httpd.conf

修改添加

systemctl stop httpd    systemctl start httpd

编写动态页面

vim index.php

 

 

 

69 bind 192.168.2.10

 92 port 7000  #端口

136 daemonize yes

672 appendonly yes  

 676 appendfilename "appendonly-7000.aof"

 

814 cluster-enabled yes   #开启集群的功能

822 cluster-config-file nodes-7000.conf  #集群文件

828 cluster-node-timeout 5000  #节点之间连接超时的时间

 

 

 sed -i "s/7000/7001/g" 7001/redis.conf

cat 7001/redis.conf | grep 7001

sed -i "s/7000/7002/g" 7002/redis.conf

  cat 7002/redis.conf | grep 7002

  sed -i "s/7000/7003/g" 7003/redis.conf

  cat 7003/redis.conf | grep 7003

  sed -i "s/7000/7004/g" 7004/redis.conf

  cat 7004/redis.conf | grep 7004

  sed -i "s/7000/7005/g" 7005/redis.conf

  cat 7005/redis.conf | grep 7005

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐