LVS+keepalived的安装部署怎么完成mysql的负载均衡

网友投稿 387 2023-12-26

LVS+keepalived的安装部署怎么完成mysql的负载均衡

LVS+keepalived的安装部署怎么完成mysql的负载均衡,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

LVS+keepalived的安装部署怎么完成mysql的负载均衡

试验环境:

LVS1:192.168.9.27

LVS2:192.168.9.28

keepalived  的VIP:192.168.9.230

要分发的mysql1: 192.168.9.29

要分发的mysql2:192.168.9.30

具体安装步骤:

#-ipvsadm (也就是LVS程序包)

wget http://www.linuxvirtualserver.org/software/kernel-2.6/ipvsadm-1.24.tar.gz

#解压

[root@lvs-a ~]# tar -zxf ipvsadm-1.24.tar.gz

#进入该ipvsadm目录

[root@lvs-a ~]# cd /usr/local/ipvsadm-1.24

#安装开发包及库文件

[root@lvs-a ipvsadm-1.24]# # yum install zlib-devel gcc gcc-c++ openssl-devel pcre-devel libtool kernel-devel ncurses-devel -y

#创建内核连接

[root@lvs-a ipvsadm-1.24]# ln -sv /usr/src/kernels/2.6.18-194.el5-i686/ /usr/src/linux  #2.6.18-194.el5-i686)根据系统版本修改。

#编译安装

[root@lvs-a ipvsadm-1.24]# make;make install

#进入目录

[root@lvs-a ~]# cd  /usr/local/

#-keepalived

wget http://www.keepalived.org/software/keepalived-1.1.17.tar.gz

#解压

[root@lvs-a ipvsadm-1.24]# tar -zxf keepalived-1.2.12.tar.gz

#进入该keepalived目录

[root@lvs-a ~]cd keepalived-1.2.12

#编译安装

[root@lvs-a keepalived-1.2.12]#./configure --prefix=/usr/local/keepalived  #这里编译完后面显示三个yes,说明编译成功,否则安装不成功。

#以下为1.2.12版本./configure结果如下

#如果为1.1.17版本./configure结果如下

[root@lvs-a keepalived-1.2.12]#make

[root@lvs-a keepalived-1.2.12]#make install

#复制启动文件

[root@lvs-a keepalived-1.2.12]#cp /usr/local/keepalived/etc/rc.d/init.d/keepalived  /etc/init.d/    ##这样才能用service keepalived 的命令。

#复制命令文件

[root@lvs-a keepalived-1.2.12]#cp /usr/local/keepalived/sbin/keepalived /usr/sbin/

#复制【配置文件

[root@lvs-a keepalived-1.2.12]#cp /usr/local/keepalived/etc/sysconfig/keepalived  /etc/sysconfig/

#新建主配置文件目录

[root@lvs-a keepalived-1.2.12]#mkdir -p /etc/keepalived

#编辑配置文件LVS1

[root@lvs-a sysconfig]#vim  /etc/keepalived/keepalived.conf

! Configuration File for keepalived

global_defs {

   router_id lvs

}

vrrp_sync_group http {                            #设置vrrp

组,随便起名字,

group {

mysql ###

随便起的名字

         }

}

vrrp_instance apache {                          ###定义一个vrrp

实例

    state MASTER                                     #设置lvs的状态, MASTERBACKUP

两种,必须大写,主节点master,从节点backup

    interface eth0                                      #设置对外服务的接口,也就是/LVS

监控的网络接口

    virtual_router_id 01                             #设置lvs监听的接口,同一实例下virtual_router_id必须相同 ,随便起名字    priority 500                                          # #

设置优先级,数值越大,优先级越高 ,也就是主节点的这个值大

advert_int 1                                          ## //MASTERBACKUP

负载均衡器之间同步检查的时间间隔,单位是秒

authentication { #

设置验证类型和密码

        auth_type PASS                                 

        auth_pass aabb                                ##密码

    }

virtual_ipaddress {                          ##设置keepalived的VIP

        192.168.9.230                           #如果有多个,往下加就行了

        #192.168.9.231

        #192.168.9.232

}

}

virtual_server 192.168.9.230 3306 {               ##

定义虚拟服务器

delay_loop 6                                              #健康检查时间,单位是秒。

    lb_algo rr                                                   #负载调度算法,这里设置为rr

,即轮询算法

lb_kind DR                                                 #LVS实现负载均衡的机制,可以有NATTUNDR

三个模式可选

nat_mask 255.255.255.0                             #可以不填写这个参数,

#    persistence_timeout 50

    protocol TCP

real_server 192.168.9.29 3306 {                      ##要分发的目标服务器IP,

        weight 1                                                        #

设置权重,也就是分发的次数,这里表示每个分发一次,

TCP_CHECK {                                                  #通过tcpcheck判断RealServer

的健康状态

connect_timeout 3                                     ##连接超时时间

#nb_get_retry 3                                           #重连次数 ,有默认值              #delay_before_retry 3                                #

重连间隔时间   有默认值                       

              connect_port 3306

            }

        }

real_server 192.168.9.30 3306 {

        weight 1

        TCP_CHECK {

              connect_timeout 3

              connect_port 3306

            }

        }

}

#配置完成重启keepalived

[root@lvs-a sysconfig]#service keepalived restart

#添加自己的网关

[root@lvs-a network-scripts]# route add -host 192.168.9.254  dev eth0

 #安装keepalivedlvs1相同

 #安装keepalived后配置LVS2,配置如下:

[root@lvs-b ~]# cat /etc/keepalived/keepalived.conf

! Configuration File for keepalived

global_defs {

   router_id lvs

}

vrrp_sync_group http {

group {

           mysql

         }

}

vrrp_instance apache {

    state BACKUP 

    interface eth0

    virtual_router_id 01

priority 400

    advert_int 1

 #  nopreempt

    authentication {

        auth_type PASS

        auth_pass aabb

    }

    virtual_ipaddress {

192.168.9.230

    }

}

virtual_server 192.168.9.230 3306 {

    delay_loop 6

    lb_algo rr

    lb_kind DR

    nat_mask 255.255.255.0

#    persistence_timeout 50

    protocol TCP

    real_server 192.168.9.29 3306 {

        weight 1

        TCP_CHECK {

connect_timeout 3

              connect_port 3306

            }

        }

    real_server 192.168.9.30 3306 {

        weight 1

        TCP_CHECK {

              connect_timeout 3

connect_port 3306

            }

        }

}

#配置完成重启keepalived

service keepalived restart

#添加自己的网关

route add -host 192.168.9.254  dev eth0

#查看

route -n

#查看分发结果

Ipvsadm -ln

#清除分发

Ipvsadm -C

#查看虚拟ipVIP

Ip addr

#配置 mysql-realserver1  在192.168.9.29上执行:

[root@lvs-a ~]# ifconfig lo:0 192.168.9.230 netmask 255.255.255.0  broadcast 192.168.9.230 up       ##设置的一个临时的IP

设置到主机的路由

[root@lvs-b ~]# route add -host 192.168.9.230 dev lo:0

设置默认路由

[root@lvs-b ~]#route add default gw 192.168.9.137

保证arp协议在连接过程中,路由器上,只知道网络中192.168.9.230对应的是分发器

[root@lvs-b ~]#echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore

[root@lvs-b ~]#echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce

#配置 mysql-realserver2  在192.168.9.30上执行:

[root@lvs-a ~]# ifconfig lo:0 192.168.9.230 netmask 255.255.255.0  broadcast 192.168.9.230 up

设置到主机的路由

[root@lvs-a ~]#route add -host 192.168.9.230 dev lo:0

设置默认路由

[root@lvs-a ~]#route add default gw 192.168.153.137

保证arp协议在连接过程中,路由器上,只知道网络中192.168.9.230对应的是分发器

[root@lvs-a ~]#echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore

[root@lvs-a ~]#echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce

#两台mysql-realserver配置完成后启动分别mysql

Service mysqld start

LVS分发测试:

1,在  mysql-realserver1(192.168.9.29)  创建一个名字叫做slave1的数据库

mysql> create database slave1;

Query OK, 1 row affected (0.00 sec)

2,在mysql-realserver2(192.168.9.30)上创建一个名字叫做slave2的数据库:

mysql> create database slave2  ; 

Query OK, 1 row affected (0.00 sec)

3,在一台能ping通mysql-realserver1和mysql-realserver2的机器上执行(注意不要在正在用着的lvs机器上执行,例如我现在lvs用着[root@lvs-a ~]#这个机器,如果你在这里执行他会报错

[root@lvs-a ~]#  mysql -uroot -pliuwenhe -h292.168.9.230 -eshow databases;

ERROR 2003 (HY000): Cant connect to MySQL server on 192.168.9.230 (111)

You have new mail in /var/spool/mail/root

[root@lvs-b ~]# mysql -uroot -pliuwenhe -h292.168.9.230 -eshow databases;

+--------------------+

| Database           |

+--------------------+

| information_schema | 

| he                 | 

| liuwenhe           |

| mysql              | 

| performance_schema | 

| slave1             | 

| test               |

+--------------------+

[root@lvs-b ~]# mysql -uroot -pliuwenhe -h292.168.9.230 -eshow databases;

+--------------------+

| Database           |

+--------------------+

| information_schema | 

| he                 |

| liuwenhe           | 

| mysql              | 

| performance_schema | 

| slave2             |

| test               | 

+--------------------+

 说明lvs分发成功。

看完上述内容,你们掌握LVS+keepalived的安装部署怎么完成mysql的负载均衡的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注行业资讯频道,感谢各位的阅读!

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:怎样理解limit优化
下一篇:Mycat分片规则是怎么样的
相关文章

 发表评论

暂时没有评论,来抢沙发吧~