Mycat+HaProxy+keepalived实现高可用

一、准备工作

准备三台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安装与配置)。

最终,我们要实现下面的架构。
Mycat+HaProxy+keepalived实现高可用_第1张图片

二、安装HaProxy

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

1、查找haproxy的安装文件

yum search haproxy

Mycat+HaProxy+keepalived实现高可用_第2张图片

2、安装haproxy

yum -y install haproxy.x86_64

Mycat+HaProxy+keepalived实现高可用_第3张图片

3、修改haproxy的配置

vim /etc/haproxy/haproxy.cfg

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

Mycat+HaProxy+keepalived实现高可用_第4张图片

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

Mycat+HaProxy+keepalived实现高可用_第5张图片

4、启动Haproxy

haproxy -f /etc/haproxy/haproxy.cfg

image.png

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

ps -ef|grep haproxy

image.png

没问题。

5、通过Navicat连接haproxy
Mycat+HaProxy+keepalived实现高可用_第6张图片

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

Mycat+HaProxy+keepalived实现高可用_第7张图片

6、测试验证

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

Mycat+HaProxy+keepalived实现高可用_第8张图片

可以正常访问

Mycat+HaProxy+keepalived实现高可用_第9张图片

再将152服务器上mycat也关闭

Mycat+HaProxy+keepalived实现高可用_第10张图片

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

Mycat+HaProxy+keepalived实现高可用_第11张图片

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

Mycat+HaProxy+keepalived实现高可用_第12张图片

三、安装keepalived

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

yum search keepalived

Mycat+HaProxy+keepalived实现高可用_第13张图片

2、安装keepalived

yum install -y keepalived.x86_64

Mycat+HaProxy+keepalived实现高可用_第14张图片

3、修改配置文件

vim /etc/keepalived/keepalived.conf

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

Mycat+HaProxy+keepalived实现高可用_第15张图片

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

Mycat+HaProxy+keepalived实现高可用_第16张图片

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

Mycat+HaProxy+keepalived实现高可用_第17张图片

所以interface需要修改成ens33。

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

Mycat+HaProxy+keepalived实现高可用_第18张图片

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

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

Mycat+HaProxy+keepalived实现高可用_第19张图片

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

Mycat+HaProxy+keepalived实现高可用_第20张图片

TCP_CHECK {
            connect_port num
            connect_timeout num
        }

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

Mycat+HaProxy+keepalived实现高可用_第21张图片

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

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

scp [email protected]:/etc/keepalived/keepalived.conf /etc/keepalived/

image.png

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

Mycat+HaProxy+keepalived实现高可用_第22张图片

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

keepalived -f /etc/keepalived/keepalived.conf

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

ps -ef|grep keepalived

image.png

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

Mycat+HaProxy+keepalived实现高可用_第23张图片

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

Mycat+HaProxy+keepalived实现高可用_第24张图片

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

Mycat+HaProxy+keepalived实现高可用_第25张图片

四、测试

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

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

ps -ef|grep keepalived

image.png

然后将keepalived的进程全部kill掉

image.png

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

Mycat+HaProxy+keepalived实现高可用_第26张图片

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

Mycat+HaProxy+keepalived实现高可用_第27张图片

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

Mycat+HaProxy+keepalived实现高可用_第28张图片

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

Mycat+HaProxy+keepalived实现高可用_第29张图片

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

Mycat+HaProxy+keepalived实现高可用_第30张图片

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

Mycat+HaProxy+keepalived实现高可用_第31张图片

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

Mycat+HaProxy+keepalived实现高可用_第32张图片

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

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

yum search killall

Mycat+HaProxy+keepalived实现高可用_第33张图片

yum install -y psmisc.x86_64

查看一下killall命令

Mycat+HaProxy+keepalived实现高可用_第34张图片

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

Mycat+HaProxy+keepalived实现高可用_第35张图片

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

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

Mycat+HaProxy+keepalived实现高可用_第36张图片

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

Mycat+HaProxy+keepalived实现高可用_第37张图片

Mycat+HaProxy+keepalived实现高可用_第38张图片

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

Mycat+HaProxy+keepalived实现高可用_第39张图片

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

Mycat+HaProxy+keepalived实现高可用_第40张图片

Mycat+HaProxy+keepalived实现高可用_第41张图片

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

Mycat+HaProxy+keepalived实现高可用_第42张图片

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

Mycat+HaProxy+keepalived实现高可用_第43张图片

Mycat+HaProxy+keepalived实现高可用_第44张图片

你可能感兴趣的:(mycat,haproxy,keepalived)