首先解释一下这个高可用的作用,如果我们php的项目直接链接mysql的话当mysql主坏掉把从提升为主的时候我们前面所有通过ip链接数据库的中间件都要去把mysql主的ip换成我们新提升为主的msyql的ip,非常麻烦。我们做了这个虚拟vip吧主从都加进去这样我们主坏了吧从换为主的时候我们就不用在去改ip了。
首先搭建一个lnmp分布式,我这的分布为
192.168.124.177安装nginx和php,把wrodpress放到网站根目录下。
192.168.124.179和192.168.124.180安装haproxy和keepalived高可用。
192.168.124.178和192.168.124.181安装msyql做主从。
安装nginx和php的步骤和mysql的步骤就跳过了,分别安装一下就可以了
接下来开始安装haproxy192.168.124.179和192.168.124.180的两台自己操作一样。
yum -y install haproxy
进入配置文件
vim /etc/haproxy/haproxy.cfg
添加如下配置自己添加的我添加在最下面了
第一行的MySQL是组
第二行bind是监听本机ip我这写的0.0.0.0指得所有,后面是端口要写没有占用的,第三行值得协议,第四行指得转发到的ip这边是mysql主机的ip和端口
启动
systemctl start haproxy
启动后查看
然后安装keepalibved 用来做haproxy的高可用主机ip为192.168.124.179和192.168.124.180
yum -y install keepalived
然后进入配置文件
vim /etc/keepalived/keepalived.conf
192.168.124.179我作为master
配置为
! Configuration File for keepalived
global_defs {
notification_email {
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 192.168.200.1
smtp_connect_timeout 30
router_id LVS_DEVEL
vrrp_skip_check_adv_addr
! vrrp_strict
vrrp_garp_interval 0
vrrp_gna_interval 0
}
vrrp_instance VI_1 {
state MASTER
interface ens33
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.124.100
}
}
virtual_server 192.168.124.100 8006 {
delay_loop 6
lb_algo rr
protocol TCP
real_server 192.168.124.179 8006 {
weight 1
notify_down "pkill keepalived"
TCP_CHECK {
connect_port 8006
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
vip为192.168.124.100然后我监听的为我的haproxy的端口,当我haproxy的端口挂掉过这个机子的keepalived也会停掉,达到vip飘逸。
然后192.168.124.180的配置为
! Configuration File for keepalived
global_defs {
notification_email {
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 192.168.200.1
smtp_connect_timeout 30
router_id LVS_DEVEL
vrrp_skip_check_adv_addr
! vrrp_strict
vrrp_garp_interval 0
vrrp_gna_interval 0
}
vrrp_instance VI_1 {
state MASTER
interface ens33
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.124.100
}
}
virtual_server 192.168.124.100 8006 {
delay_loop 6
lb_algo rr
protocol TCP
real_server 192.168.124.179 8006 {
weight 1
notify_down "pkill keepalived"
TCP_CHECK {
connect_port 8006
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
两个keepalived的配置区别只有一个是master一个是backup。权重一个是100一个是90
启动这两个keeplived
systemctl start keepalived
启动完后查看是否有vip。
vip一般在master主机上当主挂掉后才能跑到backup上,然后测试一下关掉主看看VIP是否可以飘逸到备上去。
我们测试一下
systemctl stop haproxy
这样我们的配置就可以了接了来我们需要链接数据库的时候ip写我们vip的IP即可
我这的mysql的用户名和库名如下
链接数据库
链接成功