redisPXC迁移数据LB HA

1:部署内存存储服务

1.1 问题

具体操作如下:

  1. 部署redis服务器
  2. 创建redis集群
  3. 配置网站服务器
  4. 测试配置

1.2 方案

克隆7台虚拟机配置要求如表-1所示。

表-1

1.3 步骤

实现此案例需要按照如下步骤进行。

步骤一:部署redis服务器(6台都要配置)

分别做如下配置

第1步 安装redis软件并做初始化配置

第2步 停止按照初始化配置启动的Redis服务

第3步 修改主配置文件(启用集群功能)

第4步 启动redis服务 并查看端口号

重要说明:6台Redis服务器内存里不允许有数据; Redis服务不能设置连接密码

 
  1. [root@host51 ~]# yum -y install gcc
  2. [root@host51 ~]# tar -xf redis-4.0.8.tar.gz
  3. [root@host51 ~]# cd redis-4.0.8/
  4. [root@host51 ~]# make && make install
  5. [root@host51 ~]# ./utils/install_server.sh 遇到提示就回车
  6. [root@host51 ~]# /etc/init.d/redis_6379 stop
  7. [root@host51 ~]# vim /etc/redis/6379.conf
  8. bind 192.168.88.51
  9. port 6379
  10. cluster-enabled yes #启用集群功能
  11. cluster-config-file nodes-6379.conf 保存集群信息的配置文件
  12. cluster-node-timeout 5000 集群中主机的连接超时时间
  13. [root@host51 ~]#     
  14. [root@host51 ~]# /etc/init.d/redis_6379 start
  15. [root@host51 ~]# netstat -utnlp | grep redis-server
  16. tcp 0 0 192.168.88.51:16379 0.0.0.0:* LISTEN 4249/redis-server 1
  17. tcp 0 0 192.168.88.51:6379 0.0.0.0:* LISTEN 4249/redis-server 1
  18. [root@host52 ~]# yum -y install gcc
  19. [root@host52 ~]# tar -xf redis-4.0.8.tar.gz
  20. [root@host52 ~]# cd redis-4.0.8/
  21. [root@host52 ~]# make && make install
  22. [root@host52 ~]# ./utils/install_server.sh 遇到提示就回车
  23. [root@host52 ~]# /etc/init.d/redis_6379 stop
  24. [root@host52 ~]# sed -n '70p;93p;815p;823p;829p' /etc/redis/6379.conf
  25. bind 192.168.88.52
  26. port 6379
  27. cluster-enabled yes #启用集群功能
  28. cluster-config-file nodes-6379.conf 保存集群信息的配置文件
  29. cluster-node-timeout 5000 集群中主机的连接超时时间
  30. [root@host52 ~]#     
  31. [root@host52 ~]# /etc/init.d/redis_6379 start
  32. [root@host52 ~]# netstat -utnlp | grep redis-server
  33. tcp 0 0 192.168.88.52:16379 0.0.0.0:* LISTEN 4249/redis-server 1
  34. tcp 0 0 192.168.88.52:6379 0.0.0.0:* LISTEN 4249/redis-server 1

3)配置host53主机

 
  1. [root@host53 ~]# yum -y install gcc
  2. [root@host53 ~]# tar -xf redis-4.0.8.tar.gz
  3. [root@host53 ~]# cd redis-4.0.8/
  4. [root@host53 ~]# make && make install
  5. [root@host53 ~]# ./utils/install_server.sh 遇到提示就回车
  6. [root@host53 ~]# /etc/init.d/redis_6379 stop
  7. [root@host53 ~]# sed -n '70p;93p;815p;823p;829p' /etc/redis/6379.conf
  8. bind 192.168.88.53
  9. port 6379
  10. cluster-enabled yes
  11. cluster-config-file nodes-6379.conf
  12. cluster-node-timeout 5000
  13. [root@host53 ~]#     
  14. [root@host53 ~]# /etc/init.d/redis_6379 start
  15. [root@host53 ~]# netstat -utnlp | grep redis-server
  16. tcp 0 0 192.168.88.53:16379 0.0.0.0:* LISTEN 4249/redis-server 1
  17. tcp 0 0 192.168.88.53:6379 0.0.0.0:* LISTEN 4249/redis-server 1

4)配置服务器host54

 
  1. [root@host54 ~]# yum -y install gcc
  2. [root@host54 ~]# tar -xf redis-4.0.8.tar.gz
  3. [root@host54 ~]# cd redis-4.0.8/
  4. [root@host54 ~]# make && make install
  5. [root@host54 ~]# ./utils/install_server.sh 遇到提示就回车
  6. [root@host54 ~]# /etc/init.d/redis_6379 stop
  7. [root@host54 ~]# sed -n '70p;93p;815p;823p;829p' /etc/redis/6379.conf
  8. bind 192.168.88.54
  9. port 6379
  10. cluster-enabled yes
  11. cluster-config-file nodes-6379.conf
  12. cluster-node-timeout 5000
  13. [root@host54 ~]#     
  14. [root@host54 ~]# /etc/init.d/redis_6379 start
  15. [root@host54 ~]# netstat -utnlp | grep redis-server
  16. tcp 0 0 192.168.88.54:16379 0.0.0.0:* LISTEN 4249/redis-server 1
  17. tcp 0 0 192.168.88.54:6379 0.0.0.0:* LISTEN 4249/redis-server 1

5)配置服务器host55

 
  1. [root@host55 ~]# yum -y install gcc
  2. [root@host55 ~]# tar -xf redis-4.0.8.tar.gz
  3. [root@host55 ~]# cd redis-4.0.8/
  4. [root@host55 ~]# make && make install
  5. [root@host55 ~]# ./utils/install_server.sh 遇到提示就回车
  6. [root@host55 ~]# /etc/init.d/redis_6379 stop
  7. [root@host55 ~]# sed -n '70p;93p;815p;823p;829p' /etc/redis/6379.conf
  8. bind 192.168.88.55
  9. port 6379
  10. cluster-enabled yes
  11. cluster-config-file nodes-6379.conf
  12. cluster-node-timeout 5000
  13. [root@host55 ~]#     
  14. [root@host55 ~]# /etc/init.d/redis_6379 start
  15. [root@host55 ~]# netstat -utnlp | grep redis-server
  16. tcp 0 0 192.168.88.55:16379 0.0.0.0:* LISTEN 4249/redis-server 1
  17. tcp 0 0 192.168.88.55:6379 0.0.0.0:* LISTEN 4249/redis-server 1

6)配置服务器host56

 
  1. [root@host56 ~]# yum -y install gcc
  2. [root@host56 ~]# tar -xf redis-4.0.8.tar.gz
  3. [root@host56 ~]# cd redis-4.0.8/
  4. [root@host56 ~]# make && make install
  5. [root@host56 ~]# ./utils/install_server.sh 遇到提示就回车
  6. [root@host56 ~]# /etc/init.d/redis_6379 stop
  7. [root@host56 ~]# sed -n '70p;93p;815p;823p;829p' /etc/redis/6379.conf
  8. bind 192.168.88.56
  9. port 6379
  10. cluster-enabled yes
  11. cluster-config-file nodes-6379.conf
  12. cluster-node-timeout 5000
  13. [root@host56 ~]#     
  14. [root@host56 ~]# /etc/init.d/redis_6379 start
  15. [root@host56 ~]# netstat -utnlp | grep redis-server
  16. tcp 0 0 192.168.88.56:16379 0.0.0.0:* LISTEN 4249/redis-server 1
  17. tcp 0 0 192.168.88.56:6379 0.0.0.0:* LISTEN 4249/redis-server 1

步骤二:创建管理集群脚本

第一步:准备ruby脚本的运行环境

第二步:创建脚本

第三步:查看脚本帮助信息

 
  1. ]#yum -y install rubygems ruby
  2. ]#gem install redis-3.2.1.gem
  3. ]#mkdir /root/bin //创建命令检索目录
  4. ]#tar -xf redis-4.0.8.tar.gz
  5. ]#cp redis-4.0.8/src/redis-trib.rb /root/bin/     
  6. ]#chmod +x /root/bin/redis-trib.rb //设置执行权限
  7. ]#redis-trib.rb help //看到帮助信息为成功

步骤三:创建集群

创建集群的命令格式

 
  1. [root@mgm57 ~]# redis-trib.rb create --replicas 数字 ip地址:端口 ip地址:端口 ip地址:端口 ....

说明,创建集群时,会把前3台服务器 配置为主服务器,剩下的其他主机全做从服务器 --replicas 指定每个主服务器有几台从服务器

 
  1. [root@mgm57 ~]# redis-trib.rb create --replicas 1 192.168.88.51:6379 192.168.88.52:6379 192.168.88.53:6379 192.168.88.54:6379 192.168.88.55:6379 192.168.88.56:6379
  2. >>> Creating cluster
  3. >>> Performing hash slots allocation on 6 nodes...
  4. Using 3 masters:
  5. 192.168.88.51:6379
  6. 192.168.88.52:6379
  7. 192.168.88.53:6379
  8. Adding replica 192.168.88.55:6379 to 192.168.88.51:6379
  9. Adding replica 192.168.88.56:6379 to 192.168.88.52:6379
  10. Adding replica 192.168.88.54:6379 to 192.168.88.53:6379
  11. M: 0eb3b7aa0493a19189cba35b0c658202cc20884b 192.168.88.51:6379
  12. slots:0-5460 (5461 slots) master
  13. M: a9cb8ccd31bf3eb70433c00906c9f1a99b5e8441 192.168.88.52:6379
  14. slots:5461-10922 (5462 slots) master
  15. M: f2c1bdb78d8d224c3666fa6440bdf80ba563c581 192.168.88.53:6379
  16. slots:10923-16383 (5461 slots) master
  17. S: bdba77868965371680fa825badff59bf8ef95a81 192.168.88.54:6379
  18. replicates f2c1bdb78d8d224c3666fa6440bdf80ba563c581
  19. S: 11510f42bfd9cf667bab5f31c01476d94984200a 192.168.88.55:6379
  20. replicates 0eb3b7aa0493a19189cba35b0c658202cc20884b
  21. S: fe572ce003ee634c52adc4b42d92d15f847937d7 192.168.88.56:6379
  22. replicates a9cb8ccd31bf3eb70433c00906c9f1a99b5e8441
  23. Can I set the above configuration? (type 'yes' to accept): yes 同意
  24. ....
  25. ....
  26. [OK] All nodes agree about slots configuration.
  27. >>> Check for open slots...
  28. >>> Check slots coverage...
  29. [OK] All 16384 slots covered. 创建成功的提示
  30. [root@mgm57 ~]#

说明:创建集群失败:

1) 如果所有的Redis服务都启用的集群功能 内存里也没有数据 也没设置连接密码 还是创建失败

2)可能是物理内存不足 导致创建失败 把没用的虚拟机删除

3) 在集群中所有主机执行清除集群信息的命令 > cluster reset

步骤四:查看集群信息

连接集群中的任意主机都可以查看集群信息

1)查看集群统计信息

 
  1. [root@mgm57 ~]# redis-trib.rb info 192.168.88.56:6379
  2. 192.168.88.53:6379 (f2c1bdb7...) -> 0 keys | 5461 slots | 1 slaves.
  3. 192.168.88.51:6379 (0eb3b7aa...) -> 0 keys | 5461 slots | 1 slaves.
  4. 192.168.88.52:6379 (a9cb8ccd...) -> 0 keys | 5462 slots | 1 slaves.
  5. [OK] 0 keys in 3 masters.
  6. 0.00 keys per slot on average.
  7. [root@mgm57 ~]#

2)查看集群详细信息

 
  1. [root@mgm57 ~]# redis-trib.rb check 192.168.88.51:6379
  2. >>> Performing Cluster Check (using node 192.168.88.51:6379)
  3. M: 0eb3b7aa0493a19189cba35b0c658202cc20884b 192.168.88.51:6379
  4. slots:0-5460 (5461 slots) master
  5. 1 additional replica(s)
  6. M: f2c1bdb78d8d224c3666fa6440bdf80ba563c581 192.168.88.53:6379
  7. slots:10923-16383 (5461 slots) master
  8. 1 additional replica(s)
  9. S: bdba77868965371680fa825badff59bf8ef95a81 192.168.88.54:6379
  10. slots: (0 slots) slave
  11. replicates f2c1bdb78d8d224c3666fa6440bdf80ba563c581
  12. M: a9cb8ccd31bf3eb70433c00906c9f1a99b5e8441 192.168.88.52:6379
  13. slots:5461-10922 (5462 slots) master
  14. 1 additional replica(s)
  15. S: 11510f42bfd9cf667bab5f31c01476d94984200a 192.168.88.55:6379
  16. slots: (0 slots) slave
  17. replicates 0eb3b7aa0493a19189cba35b0c658202cc20884b
  18. S: fe572ce003ee634c52adc4b42d92d15f847937d7 192.168.88.56:6379
  19. slots: (0 slots) slave
  20. replicates a9cb8ccd31bf3eb70433c00906c9f1a99b5e8441
  21. [OK] All nodes agree about slots configuration.
  22. >>> Check for open slots...
  23. >>> Check slots coverage...
  24. [OK] All 16384 slots covered.
  25. [root@mgm57 ~]#     

步骤五:配置网站服务器

 
  1. [root@web33 ~]# tar -xf redis-cluster-4.3.0.tgz //解压
  2. [root@web33 ~]# cd redis-4.3.0/ //进入源码目录
  3. [root@web33 redis-4.3.0]# phpize //创建configure命令及配置信息文件/usr/bin/php-config
  4. Configuring for:
  5. PHP Api Version: 20100412
  6. Zend Module Api No: 20100525
  7. Zend Extension Api No: 220100525
  8. [root@web33 redis-4.3.0]#
  9. [root@web33 redis-4.3.0]# ./configure --with-php-config=/usr/bin/php-config 配置
  10. ……
  11. ……
  12. configure: creating ./config.status
  13. config.status: creating config.h
  14. config.status: config.h is unchanged
  15. config.status: executing libtool commands
  16. [root@web33 redis-4.3.0]#
  17. [root@web33 redis-4.3.0]# make //编译
  18. ……
  19. ……
  20. Build complete.
  21. Don't forget to run 'make test'.
  22. [root@web33 redis-4.3.0]#
  23. [root@web33 redis-4.3.0]# make install //安装
  24. Installing shared extensions: /usr/lib64/php/modules/ //提示模块安装目录
  25. [root@web33 redis-4.3.0]#
  26. [root@web33 redis-4.3.0]# ls /usr/lib64/php/modules/ //查看目录列表
  27. curl.so fileinfo.so json.so mysqli.so mysql.so pdo_mysql.so pdo.so pdo_sqlite.so phar.so redis.so sqlite3.so zip.so
  28. [root@web33 redis-4.3.0]#

2)修改配置文件,调用模块

 
  1. [root@web33 redis-4.3.0]# vim /etc/php.ini
  2. 728 extension_dir = "/usr/lib64/php/modules/" //模块目录
  3. 730 extension = "redis.so" //模块名
  4. :wq
  5. [root@web33 redis-4.3.0]# systemctl restart php-fpm //重启php-fpm服务
  6. [root@web33 redis-4.3.0]# php -m | grep -i redis //查看模块
  7. redis
  8. [root@web33 redis-4.3.0]#

步骤六:测试配置

1)创建连接集群PHP脚本

 
  1. //存储数据脚本
  2. Web33~ ]# vim /usr/local/nginx/html/set_data.php
  3. <?php
  4. $redis_list = ['192.168.88.51:6379','192.168.88.52:6379','192.168.88.53:6379','192.168.88.54:6379','192.168.88.55:6379','192.168.88.56:6379']; //定义redis服务器列表
  5. $client = new RedisCluster(NUll,$redis_list); //定义连接redis服务器命令
  6. $client->set("i","tarenaA "); //存储变量i
  7. $client->set("j","tarenaB "); //存储变量j
  8. $client->set("k","tarenaC "); //存储变量k
  9. echo "save data ok";
  10. ?>
  11. :wq
  12. //获取数据脚本
  13. Web33 ~]# vim /usr/local/nginx/html/get_data.php
  14. <?php
  15. $redis_list = ['192.168.88.51:6379','192.168.88.52:6379','192.168.88.53:6379','192.168.88.54:6379','192.168.88.55:6379','192.168.88.56:6379']; //定义redis服务器列表
  16. $client = new RedisCluster(NUll,$redis_list); //定义连接redis服务器命令
  17. echo $client->get("i"); //获取变量i 的数据
  18. echo $client->get("j"); //获取变量j 的数据
  19. echo $client->get("k"); //获取变量k 的数据
  20. ?>
  21. :wq

2)访问网站执行脚本(在任意主机访问网站服务器都可以)

 
  1. ]# curl http://192.168.4.33/set_data.php
  2. ]# curl http://192.168.4.33/get_data.php

3)命令行连接任意一台redis服务器查看数据(在任意主机连接redis服务器都可以)

 
  1. ]# redis-cli -c -h 192.168.88.51 -p 6379
  2. 192.168.88.51:6379> keys *
  3. 1) i
  4. 192.168.88.51:6379> exit
  5. ]# redis-cli -c -h 192.168.88.52 -p 6379
  6. 192.168.88.52:6379> keys *
  7. 1) j
  8. 192.168.88.52:6379> exit
  9. ]# redis-cli -c -h 192.168.88.53 -p 6379
  10. 192.168.88.52:6379> keys *
  11. 1) k
  12. 192.168.88.52:6379> exit

2 案例2:环境准备

2.1 问题

要求如下:

  1. 部署MySQL服务
  2. 配置从服务器

2.2 方案

创建1台新的虚拟机,配置ip地址为192.168.88.66,并配置为192.168.88.11的从数据库服务器。

2.3 步骤

实现此案例需要按照如下步骤进行。

步骤一:部署MySQL服务

1)安装软件

 
  1. [root@pxcnode66 ~]# tar -xf mysql-5.7.17.tar //解包
  2. [root@pxcnode66 ~]# ls *.rpm //查看软件列表
  3. mysql-community-client-5.7.17-1.el7.x86_64.rpm
  4. mysql-community-common-5.7.17-1.el7.x86_64.rpm
  5. mysql-community-devel-5.7.17-1.el7.x86_64.rpm
  6. mysql-community-embedded-5.7.17-1.el7.x86_64.rpm
  7. mysql-community-embedded-compat-5.7.17-1.el7.x86_64.rpm
  8. mysql-community-embedded-devel-5.7.17-1.el7.x86_64.rpm
  9. mysql-community-libs-5.7.17-1.el7.x86_64.rpm
  10. mysql-community-libs-compat-5.7.17-1.el7.x86_64.rpm
  11. mysql-community-minimal-debuginfo-5.7.17-1.el7.x86_64.rpm
  12. mysql-community-server-5.7.17-1.el7.x86_64.rpm
  13. mysql-community-test-5.7.17-1.el7.x86_64.rpm
  14. [root@pxcnode66 ~]#
  15. [root@pxcnode66 ~]# yum -y install mysql-community-*.rpm //安装软件
  16. 已加载插件:fastestmirror
  17. 正在检查 mysql-community-client-5.7.17-1.el7.x86_64.rpm: mysql-community-client-5.7.17-1.el7.x86_64
  18. mysql-community-client-5.7.17-1.el7.x86_64.rpm 将被安装
  19. ……
  20. ……
  21. 已安装:
  22. mysql-community-client.x86_64 0:5.7.17-1.el7 mysql-community-common.x86_64 0:5.7.17-1.el7
  23. mysql-community-devel.x86_64 0:5.7.17-1.el7 mysql-community-embedded.x86_64 0:5.7.17-1.el7
  24. mysql-community-embedded-compat.x86_64 0:5.7.17-1.el7 mysql-community-embedded-devel.x86_64 0:5.7.17-1.el7
  25. mysql-community-libs.x86_64 0:5.7.17-1.el7 mysql-community-libs-compat.x86_64 0:5.7.17-1.el7
  26. mysql-community-minimal-debuginfo.x86_64 0:5.7.17-1.el7 mysql-community-server.x86_64 0:5.7.17-1.el7
  27. mysql-community-test.x86_64 0:5.7.17-1.el7
  28. 作为依赖被安装:
  29. perl-Data-Dumper.x86_64 0:2.145-3.el7 perl-JSON.noarch 0:2.59-2.el7
  30. 完毕!
  31. [root@pxcnode66 ~]#

2)启动服务

 
  1. [root@pxcnode66 ~]# systemctl start mysqld
  2. [root@pxcnode66 ~]# systemctl enable mysqld //设置服务开机运行
  3. [root@pxcnode66 ~]# netstat -utnlp | grep :3306 //查看端口
  4. tcp6 0 0 :::3306 :::* LISTEN 1531/mysqld

3)管理员登录

 
  1. [root@pxcnode66 ~]# grep password /var/log/mysqld.log //查看初始密码
  2. 2019-07-05T01:56:51.895852Z 1 [Note] A temporary password is generated for root@localhost: bB0*uCmu:.Kj
  3. [root@pxcnode66 ~]# mysql -uroot -p'bB0*uCmu:.Kj' //初始密码登录
  4. mysql>
  5. mysql> alter user root@"localhost" identified by "123qqq...A"; //修改登录密码
  6. Query OK, 0 rows affected (0.01 sec)
  7. mysql>
  8. mysql> exit //断开连接
  9. Bye
  10. [root@pxcnode66 ~]# mysql -uroot -p123qqq…A //新密码登录
  11. mysql> show databases; //查看数据库
  12. +--------------------+
  13. | Database |
  14. +--------------------+
  15. | information_schema |
  16. | mysql |
  17. | performance_schema |
  18. | sys |
  19. +--------------------+
  20. 4 rows in set (0.00 sec)
  21. Mysql>

步骤二:配置从服务器

在192.168.88.66主机做如下配置

1)修改服务主配置文件

 
  1. [root@pxcnode66 ~]# vim /etc/my.cnf
  2. [mysqld]
  3. server_id=66 //指定server_id
  4. :wq
  5. [root@pxcnode66 ~]# systemctl restart mysqld //重启服务

在MySQL11 主机 做完全备份

 
  1. [root@mysql11 ~]# rpm -ivh libev-4.15-1.el6.rf.x86_64.rpm //安装依赖软件
  2. //安装在线热备软件
  3. [root@mysql11 ~]# yum -y install percona-xtrabackup-24-2.4.7-1.el7.x86_64.rpm
  4. //备份所有数据,并记录备份数据对应的binlog日志名
  5. [root@mysql11 ~]# innobackupex -uroot -pa123qqq…A /allbak –no-timestamp
  6. //把备份文件发送给pxcnode66主机
  7. [root@mysql11 ~]# scp -r /allbak root@192.168.88.66:/root/

在pxcnode66 主机 恢复数据

 
  1. //安装依赖软件
  2. [root@pxcnode66 ~]# rpm -ivh libev-4.15-1.el6.rf.x86_64.rpm
  3. //安装在线热备软件
  4. [root@pxcnode66 ~]# yum -y install percona-xtrabackup-24-2.4.7-1.el7.x86_64.rpm
  5. [root@pxcnode66 ~]# systemctl stop mysqld //停止服务
  6. [root@pxcnode66 ~]# rm -rf /var/lib/mysql/* //清空数据库目录
  7. [root@pxcnode66 ~]# innobackupex --apply-log /root/allbak/ //准备恢复数据
  8. [root@pxcnode66 ~]# innobackupex --copy-back /root/allbak/ //恢复数据
  9. [root@pxcnode66 ~]# chown -R mysql:mysql /var/lib/mysql //修改所有者
  10. [root@pxcnode66 ~]# systemctl start mysqld //启动服务

3)指定主服务器

 
  1. //查binlog日志
  2. [root@pxcnode66 ~]# grep master11 /root/allbak/xtrabackup_info
  3. binlog_pos = filename 'master11.000001', position '7700'
  4. //管理员登录指定主服务器信息
  5. [root@pxcnode66 ~]# mysql -uroot -p123qqq…A
  6. mysql> change master to
  7. master_host="192.168.88.11" //主服务器ip地址
  8. master_user="repluser", //主服务器授权用户
  9. master_password="123qqq...A", //授权密码
  10. master_log_file="master11.000001", //binlog日志名
  11. master_log_pos=7700; //日志偏移量
  12. Query OK, 0 rows affected, 2 warnings (0.31 sec)
  13. mysql> start slave ; //启动slave 程序
  14. Query OK, 0 rows affected (0.09 sec)
  15. mysql> exit //断开连接
  16. Bye
  17. //查看主服务器地址
  18. [root@pxcnode66 ~]# mysql -uroot -p123qqq…A -e ‘show slave status \G’ | grep -i 192.168.4.11
  19. mysql: [Warning] Using a password on the command line interface can be insecure.
  20. Master_Host: 192.168.4.11 //主服务器ip地址
  21. //查看状态信息
  22. [root@pxcnode66 ~]# mysql -uroot -p123qqq…A -e ‘show slave status \G’ | grep -i "yes"
  23. mysql: [Warning] Using a password on the command line interface can be insecure.
  24. Slave_IO_Running: Yes //IO线程正常
  25. Slave_SQL_Running: Yes //SQL线程正常
  26. [root@pxcnode66 ~]#

3 案例3:创建PXC集群

3.1 问题

要求如下:

  1. 1)配置第1台PXC服务器
  2. 2)配置第2台PXC服务器
  3. 3)配置第3台PXC服务器
  4. 4)公共配置
  5. 5)测试配置

步骤一:配置第1台PXC服务器(192.168.88.66)

1)卸载mysqld服务软件

 
  1. [root@pxcnode66 ~]# systemctl stop mysqld //停止服务
  2. //查看安装的MySQL服务软件
  3. [root@pxnode66 ~]# rpm -qa | grep -i mysql
  4. mysql-community-server-5.7.17-1.el7.x86_64
  5. mysql-community-embedded-compat-5.7.17-1.el7.x86_64
  6. mysql-community-common-5.7.17-1.el7.x86_64
  7. mysql-community-client-5.7.17-1.el7.x86_64
  8. mysql-community-devel-5.7.17-1.el7.x86_64
  9. mysql-community-test-5.7.17-1.el7.x86_64
  10. mysql-community-libs-compat-5.7.17-1.el7.x86_64
  11. mysql-community-minimal-debuginfo-5.7.17-1.el7.x86_64
  12. perl-DBD-MySQL-4.023-6.el7.x86_64
  13. mysql-community-libs-5.7.17-1.el7.x86_64
  14. mysql-community-embedded-5.7.17-1.el7.x86_64
  15. mysql-community-embedded-devel-5.7.17-1.el7.x86_64
  16. [root@pxcnode66 ~]#
  17. //卸载所有的MySQL服务软件
  18. [root@pxcnode66 ~]# rpm -e --nodeps mysql-community-server mysql-community-embedded-compat mysql-community-common mysql-community-client mysql-community-devel
  19. mysql-community-test mysql-community-libs-compat mysql-community-minimal-debuginfo mysql-community-libs mysql-community-embedded mysql-community-embedded-devel
  20. 警告:/etc/my.cnf 已另存为 /etc/my.cnf.rpmsave
  21. [root@pxcnode66 ~]#

2)安装PXC软件

 
  1. //进软件目录
  2. [root@pxcnode66 ~]# cd PXC
  3. //安装依赖
  4. [root@pxcnode66 PXC]# yum -y install libev-4.15-1.el6.rf.x86_64.rpm \
  5. percona-xtrabackup-24-2.4.13-1.el7.x86_64.rpm qpress-1.1-14.11.x86_64.rpm \
  6. qpress-1.1-14.11.x86_64.rpm
  7. //解压软件包
  8. [root@pxcnode66 PXC]# tar -xf Percona-XtraDB-Cluster-5.7.25-31.35-r463-el7-x86_64-bundle.tar
  9. Percona-XtraDB-Cluster-57-5.7.25-31.35.1.el7.x86_64.rpm
  10. Percona-XtraDB-Cluster-57-debuginfo-5.7.25-31.35.1.el7.x86_64.rpm
  11. Percona-XtraDB-Cluster-client-57-5.7.25-31.35.1.el7.x86_64.rpm
  12. Percona-XtraDB-Cluster-devel-57-5.7.25-31.35.1.el7.x86_64.rpm
  13. Percona-XtraDB-Cluster-full-57-5.7.25-31.35.1.el7.x86_64.rpm
  14. Percona-XtraDB-Cluster-garbd-57-5.7.25-31.35.1.el7.x86_64.rpm
  15. Percona-XtraDB-Cluster-server-57-5.7.25-31.35.1.el7.x86_64.rpm
  16. Percona-XtraDB-Cluster-shared-57-5.7.25-31.35.1.el7.x86_64.rpm
  17. Percona-XtraDB-Cluster-shared-compat-57-5.7.25-31.35.1.el7.x86_64.rpm
  18. Percona-XtraDB-Cluster-test-57-5.7.25-31.35.1.el7.x86_64.rpm
  19. [root@pxcnode66 PXC]#
  20. //安装软件
  21. [root@pxcnode66 PXC]# yum -y install Percona-XtraDB-Cluster-*.rpm
  22. 已安装:
  23. Percona-XtraDB-Cluster-57.x86_64 0:5.7.25-31.35.1.el7 Percona-XtraDB-Cluster-57-debuginfo.x86_64 0:5.7.25-31.35.1.el7
  24. Percona-XtraDB-Cluster-client-57.x86_64 0:5.7.25-31.35.1.el7 Percona-XtraDB-Cluster-devel-57.x86_64 0:5.7.25-31.35.1.el7
  25. Percona-XtraDB-Cluster-full-57.x86_64 0:5.7.25-31.35.1.el7 Percona-XtraDB-Cluster-garbd-57.x86_64 0:5.7.25-31.35.1.el7
  26. Percona-XtraDB-Cluster-server-57.x86_64 0:5.7.25-31.35.1.el7 Percona-XtraDB-Cluster-shared-57.x86_64 0:5.7.25-31.35.1.el7
  27. Percona-XtraDB-Cluster-shared-compat-57.x86_64 0:5.7.25-31.35.1.el7 Percona-XtraDB-Cluster-test-57.x86_64 0:5.7.25-31.35.1.el7
  28. 作为依赖被安装:
  29. keyutils-libs-devel.x86_64 0:1.5.8-3.el7 krb5-devel.x86_64 0:1.15.1-18.el7 libcom_err-devel.x86_64 0:1.42.9-11.el7 libkadm5.x86_64 0:1.15.1-18.el7
  30. libselinux-devel.x86_64 0:2.5-12.el7 libsepol-devel.x86_64 0:2.5-8.1.el7 libverto-devel.x86_64 0:0.2.5-4.el7 openssl-devel.x86_64 1:1.0.2k-12.el7
  31. pcre-devel.x86_64 0:8.32-17.el7 perl-Env.noarch 0:1.04-2.el7 perl-Test-Harness.noarch 0:3.28-3.el7 perl-Test-Simple.noarch 0:0.98-243.el7
  32. zlib-devel.x86_64 0:1.2.7-17.el7
  33. 完毕!
  34. [root@pxcnode66 PXC]#

3)、修改配置文件

 
  1. //修改数据库服务配置文件
  2. [root@pxcnode66 PXC]# vim /etc/percona-xtradb-cluster.conf.d/mysqld.cnf
  3. [mysqld]
  4. server-id=66 #指定server_id
  5. :wq
  6. [root@pxcnode66 PXC]#
  7. //修改集群服务配置文件
  8. [root@pxcnode66 PXC]# vim /etc/percona-xtradb-cluster.conf.d/wsrep.cnf
  9. wsrep_cluster_address=gcomm://     #不需要写ip地址
  10. wsrep_node_address=192.168.88.66 #指定本机Ip地址
  11. wsrep_cluster_name=pxc-cluster #指定集群名称(另外2台的集群名称要于此相同)
  12. wsrep_node_name=pxcnode66 #指定本机主机名
  13. wsrep_sst_auth="sstuser:123qqq…A" #数据全量同步授权用户及密码
  14. :wq
  15. [root@pxcnode66 PXC]#

4)启动mysql服务

 
  1. [root@pxcnode66 PXC]# systemctl start mysql //启动服务
  2. [root@pxcnode66 PXC]# netstat -utnlp | grep :3306 //查看MySQL服务端口
  3. tcp6 0 0 :::3306 :::* LISTEN 24482/mysqld
  4. [root@pxcnode66 PXC]# netstat -utnlp | grep :4567 //查看集群通信端口
  5. tcp 0 0 0.0.0.0:4567 0.0.0.0:* LISTEN 24472/mysqld
  6. [root@pxcnode66 PXC]# systemctl enable mysql //设置服务开机运行
  7. [root@pxcnode66 PXC]#

5)数据库管理员登录、用户授权、查看状态信息

 
  1. [root@pxcnode66 PXC]# mysql -uroot -p123qqq…A //管理员登录
  2. //用户授权
  3. mysql> grant all on *.* to sstuser@"localhost" identified by "123qqq...A";
  4. Query OK, 0 rows affected, 1 warning (0.10 sec)
  5. //查看集群状态信息
  6. mysql> show status like "%wsrep%";
  7. | wsrep_incoming_addresses | 192.168.88.66:3306 |
  8. | wsrep_cluster_weight | 1 |
  9. | wsrep_desync_count | 0 |
  10. | wsrep_evs_delayed | |
  11. | wsrep_evs_evict_list | |
  12. | wsrep_evs_repl_latency | 0/0/0/0/0 |
  13. | wsrep_evs_state | OPERATIONAL |
  14. | wsrep_gcomm_uuid | 73809cc5-cf00-11e9-aac3-b223959fecdf |
  15. | wsrep_cluster_conf_id | 1 |
  16. | wsrep_cluster_size | 1 |
  17. | wsrep_cluster_state_uuid | 73848b1a-cf00-11e9-9058-36c1ac1e1359 |
  18. | wsrep_cluster_status | Primary |
  19. | wsrep_connected | ON |
  20. | wsrep_local_bf_aborts | 0 |
  21. | wsrep_local_index | 0 |
  22. | wsrep_provider_name | Galera |
  23. | wsrep_provider_vendor | Codership Oy <info@codership.com> |
  24. | wsrep_provider_version | 3.35(rddf9876) |
  25. | wsrep_ready | ON |
  26. +----------------------------------+--------------------------------------+
  27. 71 rows in set (0.00 sec)
  28. mysql> exit ;
  29. [root@pxcnode66 ~]#
  30. //查看状态信息依然是192.168.88.11的从服务器
  31. [root@pxcnode66 ~]# mysql -uroot -p123qqq…A -e ‘show slave status \G’ | grep -i "yes"
  32. mysql: [Warning] Using a password on the command line interface can be insecure.
  33. Slave_IO_Running: Yes //IO线程正常
  34. Slave_SQL_Running: Yes //SQL线程正常
  35. [root@pxcnode66 ~]#

步骤二:配置第2台PXC服务器(192.168.88.10)

1)安装PXC软件

 
  1. [root@pxcnode10 ~]# cd PXC //进软件目录
  2. //安装依赖
  3. [root@pxcnode10 PXC]# yum -y install libev-4.15-1.el6.rf.x86_64.rpm \
  4. percona-xtrabackup-24-2.4.13-1.el7.x86_64.rpm \
  5. qpress-1.1-14.11.x86_64.rpm
  6. //解压PXC软件包
  7. [root@pxcnode10 PXC]# tar -xf Percona-XtraDB-Cluster-5.7.25-31.35-r463-el7-x86_64-bundle.tar
  8. //安装软件
  9. [root@pxcnode10 PXC]# yum -y install Percona-XtraDB-Cluster-*.rpm
  10. 已安装:
  11. Percona-XtraDB-Cluster-57.x86_64 0:5.7.25-31.35.1.el7 Percona-XtraDB-Cluster-57-debuginfo.x86_64 0:5.7.25-31.35.1.el7
  12. Percona-XtraDB-Cluster-client-57.x86_64 0:5.7.25-31.35.1.el7 Percona-XtraDB-Cluster-devel-57.x86_64 0:5.7.25-31.35.1.el7
  13. Percona-XtraDB-Cluster-full-57.x86_64 0:5.7.25-31.35.1.el7 Percona-XtraDB-Cluster-garbd-57.x86_64 0:5.7.25-31.35.1.el7
  14. Percona-XtraDB-Cluster-server-57.x86_64 0:5.7.25-31.35.1.el7 Percona-XtraDB-Cluster-shared-57.x86_64 0:5.7.25-31.35.1.el7
  15. Percona-XtraDB-Cluster-shared-compat-57.x86_64 0:5.7.25-31.35.1.el7 Percona-XtraDB-Cluster-test-57.x86_64 0:5.7.25-31.35.1.el7
  16. 作为依赖被安装:
  17. keyutils-libs-devel.x86_64 0:1.5.8-3.el7 krb5-devel.x86_64 0:1.15.1-18.el7 libcom_err-devel.x86_64 0:1.42.9-11.el7 libkadm5.x86_64 0:1.15.1-18.el7
  18. libselinux-devel.x86_64 0:2.5-12.el7 libsepol-devel.x86_64 0:2.5-8.1.el7 libverto-devel.x86_64 0:0.2.5-4.el7 openssl-devel.x86_64 1:1.0.2k-12.el7
  19. pcre-devel.x86_64 0:8.32-17.el7 perl-Env.noarch 0:1.04-2.el7 perl-Test-Harness.noarch 0:3.28-3.el7 perl-Test-Simple.noarch 0:0.98-243.el7
  20. zlib-devel.x86_64 0:1.2.7-17.el7
  21. 完毕!
  22. [root@pxcnode10 PXC]#

2)修改配置文件

 
  1. //修改数据库服务配置
  2. [root@pxcnode10 PXC]# vim /etc/percona-xtradb-cluster.conf.d/mysqld.cnf
  3. [mysqld]
  4. server-id=10 //指定server_id
  5. :wq
  6. //修改集群服务配置文件
  7. [root@pxcnode10 PXC]# vim /etc/percona-xtradb-cluster.conf.d/wsrep.cnf
  8. wsrep_cluster_address=gcomm://192.168.88.66     //集群成员列表
  9. wsrep_node_address=192.168.88.10 //指定本机Ip地址
  10. wsrep_cluster_name=pxc-cluster //指定集群名称(要与66主机相同)
  11. wsrep_node_name=pxcnode10 //指定本机主机名
  12. wsrep_sst_auth="sstuser:123qqq…A" //数据全量同步授权用户及密码
  13. :wq
  14. [root@pxcnode10 PXC]#

3)启动mysql服务

 
  1. [root@pxcnode10 PXC]# systemctl start mysql //启动服务
  2. [root@pxcnode10 PXC]# systemctl enable mysql //服务开机运行
  3. [root@pxcnode10 PXC]# netstat -utnlp | grep :3306 //查看MySQL服务端口
  4. tcp6 0 0 :::3306 :::* LISTEN 24482/mysqld
  5. [root@pxcnode10 PXC]# netstat -utnlp | grep :4567 //查看集群端口
  6. tcp6 0 0 :::4567 :::* LISTEN 24489/mysqld
  7. [root@pxcnode10 PXC]#
  8. mysql> show status like "%wsrep%"; //查看集群状态信息
  9. | wsrep_incoming_addresses | 192.168.88.66:3306,192.168.88.10:3306|
  10. | wsrep_cluster_weight | 1 |
  11. | wsrep_desync_count | 0 |
  12. | wsrep_evs_delayed | |
  13. | wsrep_evs_evict_list | |
  14. | wsrep_evs_repl_latency | 0/0/0/0/0 |
  15. | wsrep_evs_state | OPERATIONAL |
  16. | wsrep_gcomm_uuid | 73809cc5-cf00-11e9-aac3-b223959fecdf |
  17. | wsrep_cluster_conf_id | 1 |
  18. | wsrep_cluster_size | 1 |
  19. | wsrep_cluster_state_uuid | 73848b1a-cf00-11e9-9058-36c1ac1e1359 |
  20. | wsrep_cluster_status | Primary |
  21. | wsrep_connected | ON |
  22. | wsrep_local_bf_aborts | 0 |
  23. | wsrep_local_index | 0 |
  24. | wsrep_provider_name | Galera |
  25. | wsrep_provider_vendor | Codership Oy <info@codership.com> |
  26. | wsrep_provider_version | 3.35(rddf9876) |
  27. | wsrep_ready | ON |
  28. +----------------------------------+--------------------------------------+
  29. 71 rows in set (0.00 sec)
  30. mysql> exit ;
  31. [root@pxcnode10 ~]#

步骤三:配置第3台PXC服务器(192.168.88.88)

1)安装PXC软件

 
  1. [root@pxcnode88 ~]# cd PXC //进软件目录
  2. //安装依赖
  3. [root@pxcnode88 PXC]# yum -y install qpress-1.1-14.11.x86_64.rpm \
  4. percona-xtrabackup-24-2.4.13-1.el7.x86_64.rpm \
  5. qpress-1.1-14.11.x86_64.rpm
  6. //解压PXC软件包
  7. [root@pxcnode88 PXC]# tar -xf Percona-XtraDB-Cluster-5.7.25-31.35-r463-el7-x86_64-bundle.tar
  8. [root@pxcnode88 PXC]# yum -y install Percona-XtraDB-Cluster-*.rpm //安装软件
  9. 已安装:
  10. Percona-XtraDB-Cluster-57.x86_64 0:5.7.25-31.35.1.el7 Percona-XtraDB-Cluster-57-debuginfo.x86_64 0:5.7.25-31.35.1.el7
  11. Percona-XtraDB-Cluster-client-57.x86_64 0:5.7.25-31.35.1.el7 Percona-XtraDB-Cluster-devel-57.x86_64 0:5.7.25-31.35.1.el7
  12. Percona-XtraDB-Cluster-full-57.x86_64 0:5.7.25-31.35.1.el7 Percona-XtraDB-Cluster-garbd-57.x86_64 0:5.7.25-31.35.1.el7
  13. Percona-XtraDB-Cluster-server-57.x86_64 0:5.7.25-31.35.1.el7 Percona-XtraDB-Cluster-shared-57.x86_64 0:5.7.25-31.35.1.el7
  14. Percona-XtraDB-Cluster-shared-compat-57.x86_64 0:5.7.25-31.35.1.el7 Percona-XtraDB-Cluster-test-57.x86_64 0:5.7.25-31.35.1.el7
  15. 作为依赖被安装:
  16. keyutils-libs-devel.x86_64 0:1.5.8-3.el7 krb5-devel.x86_64 0:1.15.1-18.el7 libcom_err-devel.x86_64 0:1.42.9-11.el7 libkadm5.x86_64 0:1.15.1-18.el7
  17. libselinux-devel.x86_64 0:2.5-12.el7 libsepol-devel.x86_64 0:2.5-8.1.el7 libverto-devel.x86_64 0:0.2.5-4.el7 openssl-devel.x86_64 1:1.0.2k-12.el7
  18. pcre-devel.x86_64 0:8.32-17.el7 perl-Env.noarch 0:1.04-2.el7 perl-Test-Harness.noarch 0:3.28-3.el7 perl-Test-Simple.noarch 0:0.98-243.el7
  19. zlib-devel.x86_64 0:1.2.7-17.el7
  20. 完毕!
  21. [root@pxcnode88 PXC]#

2)修改配置文件

 
  1. [root@pxcnode88 PXC]# vim /etc/percona-xtradb-cluster.conf.d/mysqld.cnf //修改数据库服务配置
  2. [mysqld]
  3. server-id=88 //指定server_id
  4. :wq
  5. [root@pxcnode88 PXC]# vim /etc/percona-xtradb-cluster.conf.d/wsrep.cnf //修改集群服务配置文件
  6. wsrep_cluster_address=gcomm://192.168.88.66     //集群成员ip地址
  7. wsrep_node_address=192.168.88.88 //指定本机Ip地址
  8. wsrep_cluster_name=pxc-cluster //指定集群名称
  9. wsrep_node_name=pxcnode88 //指定本机主机名
  10. wsrep_sst_auth="sstuser:123qqq...A" //数据全量同步授权用户及密码
  11. :wq
  12. [root@pxcnode88 PXC]#

3)启动mysql服务

 
  1. [root@pxcnode88 PXC]# systemctl start mysql //启动服务
  2. [root@pxcnode88 PXC]# systemctl enable mysql //服务开机运行
  3. [root@pxcnode88 PXC]# netstat -utnlp | grep :3306 //查看MySQL服务端口
  4. tcp6 0 0 :::3306 :::* LISTEN 24472/mysqld
  5. [root@pxcnode88 PXC]# netstat -utnlp | grep :4567 //查看集群端口
  6. tcp6 0 0 :::4567 :::* LISTEN 24486/mysqld
  7. [root@pxcnode88 PXC]#

步骤四:公共配置

1)修改192.168.88.88主机的集群配置文件

 
  1. [root@pxcnode88 ~]# vim /etc/percona-xtradb-cluster.conf.d/wsrep.cnf
  2. wsrep_cluster_address=gcomm://192.168.88.66,192.168.88.10,192.168.88.88 //指定集群成员列表
  3. :wq
  4. [root@pxcnode88 ~]#

2)修改192.168.88.10主机的集群配置文件

 
  1. [root@pxcnode10 ~]# vim /etc/percona-xtradb-cluster.conf.d/wsrep.cnf
  2. wsrep_cluster_address=gcomm:// 192.168.88.66,192.168.88.10,192.168.88.88 //指定集群成员列表
  3. :wq
  4. [root@pxcnode10 ~]#

3)修改192.168.88.66主机的集群配置文件

 
  1. [root@pxcnode66 ~]# vim /etc/percona-xtradb-cluster.conf.d/wsrep.cnf
  2. wsrep_cluster_address=gcomm://192.168.88.66,192.168.88.10,192.168.88.88 //指定集群成员列表
  3. :wq
  4. [root@pxcnode66 ~]#

步骤五:测试配置

1)在主数据库服务器给表添加主键

 
  1. //访问pxc集群存储数据需要表中有主键字段
  2. [root@mysql11 ~]# mysql -uroot -p123qqq…A
  3. mysql> alter table gamedb.user add id int primary key auto_increment first;
  4. mysql> exit;

2)存储数据:在网站服务器连接PXC集群主机存储数据

 
  1. [root@web33 ~]# mysql -h192.168.88.66 -uyaya -p123qqq…A
  2. Mysql> insert into gamedb.user values ("pljA");
  3. Mysql> exit ;
  4. [root@web33 ~]# mysql -h192.168.88.10 -uyaya -p123qqq…A
  5. Mysql> insert into gamedb.user values ("pljB");
  6. Mysql> exit ;
  7. [root@web33 ~]# mysql -h192.168.88.88 -uyaya -p123qqq…A
  8. Mysql> insert into gamedb.user values ("pljC");
  9. Mysql> exit ;

4 案例4:部署LB集群

4.1 问题

配置步骤如下:

  1. 安装软件
  2. 修改配置文件
  3. 启动服务
  4. 测试配置

4.2 方案

创建1台新虚拟机,配置ip地址 eth0 192.168.88.99 主机名 haproxy99 ;运行haproxy服务 接受客户端访问数据库的连接请求,把请求平均分发给3台PXC集群主机。

4.3 步骤

实现此案例需要按照如下步骤进行。

步骤一:安装软件

 
  1. //在haproxy99主机上安装haproxy软件
  2. [root@haproxy99 ~]# yum -y install haproxy
  3. ……
  4. 已安装:
  5. haproxy.x86_64 0:1.5.18-7.el7
  6. 完毕!
  7. [root@haproxy99 ~]#

步骤二:修改配置文件

 
  1. //文件末尾添加如下行
  2. [root@haproxy99 ~]# vim /etc/haproxy/haproxy.cfg
  3. listen mysqlLB *:3306 //集群名称与端口号
  4. mode tcp //mysql服务使用 tcp 协议
  5. option tcpka //启用长连接
  6. balance roundrobin //调度算法
  7. server pxcnode66 192.168.88.66:3306 check //第1台数据库服务器
  8. server pxcnode10 192.168.88.10:3306 check //第2台数据库服务器
  9. server pxcnode88 192.168.88.88:3306 check //第3台数据库服务器
  10. :wq
  11. [root@haproxy99 haproxy]#

步骤三:启动服务

 
  1. [root@haproxy99 ~]# systemctl start haproxy //启动服务
  2. [root@haproxy99 ~]# systemctl enable haproxy //开机运行
  3. Created symlink from /etc/systemd/system/multi-user.target.wants/haproxy.service to /usr/lib/systemd/system/haproxy.service.
  4. [root@haproxy99 ~]# netstat -utnlp | grep 3306 //查看端口
  5. tcp6 0 0 :::3306 :::* LISTEN 29768/haproxy
  6. [root@haproxy99 ~]#

步骤四:测试配置

 
  1. //在网站服务器连接haproxy99主机访问数据服务
  2. [root@web33 ~]# mysql -h192.168.88.99 -uyaya -p123qqq…A -e 'select @@hostname'
  3. mysql: [Warning] Using a password on the command line interface can be insecure.
  4. +------------+
  5. | @@hostname |
  6. +------------+
  7. | pxcnode66 | //第1次连接
  8. +------------+
  9. [root@web33 ~]#
  10. [root@web33 ~]# mysql -h192.168.88.99 -uyaya99 -p123qqq…A -e 'select @@hostname'
  11. mysql: [Warning] Using a password on the command line interface can be insecure.
  12. +------------+
  13. | @@hostname |
  14. +------------+
  15. | pxcnode10 | //第2次连接
  16. +------------+
  17. [root@web33 ~]#
  18. [root@web33 ~]# mysql -h192.168.88.99 -uyaya99 -p123qqq…A -e 'select @@hostname' [Warning] Using a password on the command line interface can be insecure.
  19. +------------+
  20. | @@hostname |
  21. +------------+
  22. | pxcnode88 | //第3次连接
  23. +------------+
  24. [root@web33 ~]#

5 案例5:部署HA集群

5.1 问题

具体配置如下:

  1. 准备备用调度器主机
  2. 安装软件
  3. 修改配置文件
  4. 启动服务
  5. 测试配置

5.2 方案

创建1台新的虚拟机,配置ip地址为192.168.88.98做备用调度器。

5.3 步骤

实现此案例需要按照如下步骤进行。

步骤一:准备备用调度器主机

 
  1. [root@haproxy98 ~]# yum -y install haproxy
  2.     ……
  3. 已安装:
  4. haproxy.x86_64 0:1.5.18-7.el7
  5. 完毕!
  6. [root@haproxy98 ~]#

2)修改haproxy98主机haproxy.conf文件)

 
  1. //直接拷贝haproxy99主机的配置文件
  2. [root@haproxy98 ~]# scp root@192.168.88.99:/etc/haproxy/haproxy.cfg /etc/haproxy/
  3. Warning: Permanently added '192.168.88.99' (ECDSA) to the list of known hosts.
  4. root@192.168.4.99's password: //输入haproxy99主机的密码
  5. haproxy.cfg 100% 3142 6.0MB/s 00:00
  6. [root@haproxy98 ~]#

3)启动haproxy服务

 
  1. [root@haproxy98 ~]# systemctl start haproxy //启动服务
  2. [root@haproxy98 ~]# systemctl enable haproxy //服务开机运行
  3. Created symlink from /etc/systemd/system/multi-user.target.wants/haproxy.service to /usr/lib/systemd/system/haproxy.service.
  4. [root@haproxy98 ~]# netstat -utnlp | grep :3306 //查看端口
  5. tcp6 0 0 :::3306 :::* LISTEN 29768/haproxy

步骤二:安装软件keepalived软件

1)在haproxy99主机安装keepalived软件

 
  1. [root@haproxy99 ~]# yum -y install keepalived.x86_64
  2. 已安装:
  3. keepalived.x86_64 0:1.3.5-6.el7
  4. 作为依赖被安装:
  5. lm_sensors-libs.x86_64 0:3.4.0-4.20160601gitf9185e5.el7 net-snmp-agent-libs.x86_64 1:5.7.2-32.el7
  6. net-snmp-libs.x86_64 1:5.7.2-32.el7
  7. [root@haproxy99 ~]#

2)在haproxy98主机安装keepalived软件

 
  1. [root@haproxy98 ~]# yum -y install keepalived.x86_64
  2. 已安装:
  3. keepalived.x86_64 0:1.3.5-6.el7
  4. 作为依赖被安装:
  5. lm_sensors-libs.x86_64 0:3.4.0-4.20160601gitf9185e5.el7 net-snmp-agent-libs.x86_64 1:5.7.2-32.el7
  6. net-snmp-libs.x86_64 1:5.7.2-32.el7
  7. [root@haproxy98 ~]#
  8. 完毕!
  9. [root@haproxy98 ~]#

步骤三:修改配置文件

1)修改haproxy99主机的配置文件

 
  1. //删除无关的配置行
  2. [root@haproxy99 ~]# sed -i '36,$d' /etc/keepalived/keepalived.conf
  3. [root@haproxy99 ~]#vim /etc/keepalived/keepalived.conf
  4. global_defs {
  5. ……
  6. ……
  7. vrrp_iptables //禁止iptables
  8. }
  9. vrrp_instance VI_1 {
  10. state MASTER //主服务器标识
  11. interface eth0
  12. virtual_router_id 51
  13. priority 150 //优先级要比 haproxy88主机高
  14. advert_int 1
  15. authentication {
  16. auth_type PASS //主备服务器连接验证方式
  17. auth_pass 1111 //连接密码
  18. }
  19. virtual_ipaddress {
  20. 192.168.88.100 //定义vip地址
  21. }
  22. }
  23. :wq
  24. //把文件拷贝给备用调度器haproxy98
  25. [root@haproxy99 ~]# scp /etc/keepalived/keepalived.conf root@192.168.88.98: /etc/keepalived/
  26. root@192.168.88.98's password: //输入haproxy98主机的密码

2)修改haproxy98主机的配置文件

 
  1. [root@haproxy98 ~]#vim /etc/keepalived/keepalived.conf
  2. global_defs {
  3. ……
  4. ……
  5. vrrp_iptables //禁止iptables
  6. }
  7. vrrp_instance VI_1 {
  8. state BACKUP //备用服务器标识
  9. interface eth0
  10. virtual_router_id 51
  11. priority 100 //优先级要比 haproxy99低
  12. advert_int 1
  13. authentication {
  14. auth_type PASS
  15. auth_pass 1111
  16. }
  17. virtual_ipaddress {
  18. 192.168.88.100 //定义vip地址
  19. }
  20. }
  21. [root@haproxy98 ~]#

步骤四:启动服务

1)在haproxy99主机启动keepalived服务

 
  1. [root@haproxy99 ~]# systemctl start keepalived.service //启动服务
  2. [root@haproxy99 ~]#
  3. [root@haproxy99 ~]# ip addr show | grep 192.168.88.100 //查看vip地址
  4. inet 192.168.88.100/32 scope global eth0
  5. [root@haproxy99 ~]#

2)在haproxy98主机启动keepalived服务

 
  1. [root@haproxy98 ~]# systemctl start keepalived.service //启动服务
  2. [root@haproxy98 ~]# ip addr show | grep 192.168.88.100 //查看不到vip

步骤五:测试配置

1)客户端连接vip地址,访问数据库服务

 
  1. [root@web33 ~]# mysql -h192.168.88.100 -uyaya99 -p123qqq…A -e 'select @@hostname'
  2. mysql: [Warning] Using a password on the command line interface can be insecure.
  3. +------------+
  4. | @@hostname |
  5. +------------+
  6. | pxcnode66 |
  7. +------------+
  8. [root@web33 ~]#
  9. [root@web33 ~]# mysql -h192.168.88.100 –uyaya99 –p123qqq…A -e 'select @@hostname'
  10. mysql: [Warning] Using a password on the command line interface can be insecure.
  11. +------------+
  12. | @@hostname |
  13. +------------+
  14. | pxcnode10 |
  15. +------------+
  16. [root@web33 ~]# mysql -h192.168.88.100 –uyaya99 –p123qqq…A -e 'select @@hostname'
  17. mysql: [Warning] Using a password on the command line interface can be insecure.
  18. +------------+
  19. | @@hostname |
  20. +------------+
  21. | pxcnode88 |
  22. +------------+
  23. [root@web33 ~]#

2)测试高可用

 
  1. [root@haproxy99 ~]# systemctl stop keepalived.service //停止keepalived服务
  2. [root@haproxy99 ~]# ip addr show | grep 192.168.88.100 //查看不到vip地址
  3. [root@haproxy98 ~]# ip addr show | grep 192.168.88.100 //在备用的haproxy98主机查看地址
  4. inet 192.168.4.100/32 scope global eth0
  5. [root@haproxy98 ~]#
  6. //客户端连接vip地址访问数据库服务
  7. [root@web33 ~]# mysql -h192.168.88.100 –uyaya99 –p123qqq…A -e 'select @@hostname'
  8. mysql: [Warning] Using a password on the command line interface can be insecure.
  9. +------------+
  10. | @@hostname |
  11. +------------+
  12. | pxcnode66 |
  13. +------------+
  14. [root@web33 ~]#
  15. [root@web33 ~]# mysql -h192.168.88.100 –uyaya99 –p123qqq…A -e 'select @@hostname'
  16. mysql: [Warning] Using a password on the command line interface can be insecure.
  17. +------------+
  18. | @@hostname |
  19. +------------+
  20. | pxcnode10 |
  21. +------------+
  22. [root@web33 ~]# mysql -h192.168.88.100 –uyaya99 –p123qqq…A -e 'select @@hostname'
  23. mysql: [Warning] Using a password on the command line interface can be insecure.
  24. +------------+
  25. | @@hostname |
  26. +------------+
  27. | pxcnode88 |
  28. +------------+
  29. [root@web33 ~]#
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

small white poplar

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值