一、准备工作

准备三台CentOS服务器,IP地址分别为192.168.0.150,192.168.0.151,192.168.0.152。

在151和152服务器上安装好Mysql(CentOS 7安装MySQL)。

在150和152服务器上安装Mycat并配置好schema(Mycat安装与配置)。

最终,我们要实现下面的架构。
image.png

二、安装HaProxy

我们通过yum的方式安装HaProxy,先在150这台服务器安装。

1、查找haproxy的安装文件

yum search haproxy

image.png

2、安装haproxy

yum -y install haproxy.x86_64

image.png

3、修改haproxy的配置

vim /etc/haproxy/haproxy.cfg

先将defaults下的mode改成tcp,因为Haproxy只能通过tcp协议来连接mycat。

image.png

接下来配置backend app,这里配置的是mycat的ip和端口号,然后保存并退出。

image.png

4、启动Haproxy

haproxy -f /etc/haproxy/haproxy.cfg

image.png

这里出现的警告信息暂时不用理会,查看一下进程看Haproxy是否已经启动

ps -ef|grep haproxy

image.png

没问题。

5、通过Navicat连接haproxy
image.png

haproxy的端口号为5000,账户密码为mycat的账户密码。

image.png

6、测试验证

关闭150服务器上的mycat,看通过haproxy能否正常访问。

image.png

可以正常访问

image.png

再将152服务器上mycat也关闭

image.png

不能正常访问。至此,Haproxy已经成功安装并成功代理到150、152服务器上的两台mycat。按照同样的步骤在152服务器上安装好Haproxy。

image.png

7、针对Haproxy启动时出现的警告信息,我们可以修改一下配置来取消掉这些警告信息。

image.png

三、安装keepalived

1、同安装Haproxy一样,先通过yum搜索keepalived。

yum search keepalived

image.png

2、安装keepalived

yum install -y keepalived.x86_64

image.png

3、修改配置文件

vim /etc/keepalived/keepalived.conf

先将global_defs下的vrrp_strict注释掉,vrrp_strict会影响虚拟IP的使用。

image.png

接下来修改vrrp_instance,这里配置的是虚拟IP。

image.png

state MASTER表示当前这台机器是keepalived主机。interface表示的是网卡,通过ip addr可以查看当前机器的网卡名称。

image.png

所以interface需要修改成ens33。

virtual_ipaddress里面配置的是虚拟IP地址,虚拟IP地址需要跟真实的IP地址在同一网段内,这里我们配置成192.168.0.200。

image.png

最后配置virtual_server虚拟服务,virtual_server后面配置的是虚拟IP和端口,所以要将IP修改成前面配置好的192.168.0.200,端口可以自行设置,这里我们设置成6000。

任何配置real_server真实的服务器。

image.png

当前机器的IP地址为192.168.0.150,端口设置成Haproxy的端口5000。因为keepalived是通过tcp连接haproxy,所以不需要SSL_GET,从keepalived官方文档找到tcp的配置。

image.png

TCP_CHECK {
            connect_port num
            connect_timeout num
        }

connect_port设置为haproxy的端口,connect_timeout设置为10秒。

image.png

然后将下面的配置都删掉。保存并退出。

4、在152服务器上安装好keepalived,然后将150机器上的配置文件复制到152机器上。

scp root@192.168.0.150:/etc/keepalived/keepalived.conf /etc/keepalived/

image.png

修改一下配置,MASTER改成SLAVE,real_server的IP改成192.168.0.152。保存并退出。

image.png

5、分别启动两台服务器上的keepalived。

keepalived -f /etc/keepalived/keepalived.conf

查看keepalived进程看是否启动成功。

ps -ef|grep keepalived

image.png

启动成功!此时通过ip addr查看150服务器的IP可以发现有两个IP地址,其中一个为keepalived的虚拟IP。

image.png

而152这台服务器仍然只有一个IP

image.png

6、通过Navicat连接keepalived,端口号为6000,账号密码为mycat的账号密码。连接成功。

image.png

四、测试

现在,HaProxy和keepalived全都成功安装并启动,我们模拟一下其中一台keepalived挂掉时,服务能否正常使用。

查看150服务器上的keepalived的进程id

ps -ef|grep keepalived

image.png

然后将keepalived的进程全部kill掉

image.png

通过Navicat访问keepalived,没有问题。

image.png

查看一下150服务器的IP,发现只存在一个IP

image.png

再看一下152服务器的IP,可以发现虚拟IP已经绑定到152服务器上。

image.png

再次启动150服务器上的keepalived,虚拟IP并不会重新绑定到150服务器上,而是继续绑定在152服务器上。

image.png

我们再模拟一下haproxy挂掉的情况,将152服务器上的haproxy的进程kill掉。

image.png

然后查看一下虚拟IP会不会绑定到150服务器上。

image.png

可以看到,haproxy挂掉时,虚拟IP并没有转移到150服务器上。此时Navicat也不能正常访问。

image.png

为了解决这个问题,需要重新修改一下keepalived的配置。

我们需要先安装killall命令,先搜索该命令。

yum search killall

image.png

yum install -y psmisc.x86_64

查看一下killall命令

image.png

我们要用到的是killall -0这个命令,该命令不是用来kill某个进程,而是探查某个进程是否存在。存在返回0,不存在返回1。

image.png

修改keepalived.conf,新增检测haproxy进程的脚本,没2秒探测一次。然后在vrrp_instance里面配置该脚本。

vrrp_script chk_haproxy {
    script "killall -0 haproxy"
    interval 2
}

image.png

real_server里面的TCP_CHECK就不再需要了,将其删除,保存并退出。

image.png

image.png

同样的操作在152服务器上再执行一遍。注意,152服务器上的vrrp_instance里面的state需要改成BACKUP

image.png

分别启动两台服务器上的keepalived,此时虚拟IP绑定在150的服务器上。

image.png

image.png

我们再次关闭150服务器上的haproxy。

image.png

然后再看一下虚拟IP地址,虚拟IP已经绑定到152服务器上。

image.png

image.png


强力小磊哥
79 声望6 粉丝

翻过一座山,就高过一座山


引用和评论

0 条评论