LVS+Keepalived主从热备的高可用环境部署,7台机子,两台主,两从,keepalived主从。

1.设置7台主机的ip,可以根据自己的ip来。

192.168.10.15mysql主
192.168.10.16mysql主2
192.168.10.17mysql从1
192.168.10.18mysql从2
192.168.10.19lvs+keepalived主
192.168.10.20lvs+keepalived从
192.168.10.21测试

1.双主搭建

192.168.10.15和192.168.10.16两台主机做2-4步骤!!!!!

2.首先开始配置,关闭防火墙和setenforce0、配置一个本地源,然后挂载。

systemctl stop firewalld        关闭防火墙
setenforce 0                       关闭setenforce


vi /etc/yum.repos.d/bdy.repo  加入以下

[local]
name=bdy
baseurl=file:///mnt
enabled=1
gpgcheck=0


然后挂载mount才可以用这个源,
mount /dev/sr0 /mnt/

3.下载mariadb数据库,配置数据库的主配置文件。

yum -y isntall mariadb*   下载mariadb

配置数据库主配置文件 
vi /etc/my.com  加入以下内容

#日志文件名前缀
log-bin=mysql-bin

#标识 唯一的id 要和
server-id=1   

#排除不复制的库
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema
binlog-ignore-db=sys

#配置排除的库
relay-log=mysql-relay-bin
replicate-ignore-db=mysql
replicate-ignore-db=information_schema
replicate-ignore-db=performance_schema
replicate-ignore-db=sys

log_slave_updates=1

4.配置数据库密码,启动mariadb。

#配置数据库密码
mysql_secure_installation

Enter current password for root (enter for none):按回车
Switch to unix_socket authentication [Y/n] :按回车
Change the root password? [Y/n]:按回车
New password: 123456  #输入设置数据库的密码 123456 在回车
Re-enter new password: 123456  在输一次123456 按回车
Remove anonymous users? [Y/n] 按回车
Disallow root login remotely? [Y/n] 按回车
Remove test database and access to it? [Y/n] 按回车
Reload privilege tables now? [Y/n] 按回车
Thanks for using MariaDB!  数据库密码配置完毕

启动mariadb
systemctl restart mariadb

    

5.在这台主机上(192.168.10.15 主)登录数据库,授权远程的主2,在获取主库信息。

数据库密码
mysql -uroot -p123456


创建用户(cdm)
create user "cdm"@"%" identified by '123456';

赋予权限
grant replication slave on *.* to "cdm"@"%" identified by '123456';

刷新权限
flush privileges;


获取主库信息
show master status; 


6.show master status;   得到以下内容  

7.在(192.168.10.16 主2)上配置连接到第一个主(192.168.10.15),

CHANGE MASTER TO 
MASTER_HOST='192.168.10.15',  (第一个主的ip)
MASTER_USER='cdm',   (第一个设置的用户)
MASTER_PASSWORD='123456', (第一个设置的密码)
MASTER_PORT=3306, 
MASTER_LOG_FILE='mysql-bin.000001', (第一个主的信息)
MASTER_LOG_POS=3763;  (第一个主的信息)



#完整命令:
CHANGE MASTER TO 
MASTER_HOST='192.168.10.15', 
MASTER_USER='cdm', 
MASTER_PASSWORD='123456', 
MASTER_PORT=3306, 
MASTER_LOG_FILE='mysql-bin.000001', 
MASTER_LOG_POS=3763;


此两条结果与第六条查出的相对应。

MASTER_LOG_FILE='mysql-bin.000001',    
MASTER_LOG_POS=3763;

8.然后启动slave,查看是否yes;

启动slave
start slave;

查看是否yes; 
show slave status \G;

连接第二个主成功。 

9. 在第二个主上登录mysql,然后在第二个主2(192.168.10.16)上配置授权远程用户,获取第二个主库的信息

登陆mysql
mysql_-uroot -p 

授权用户
grant replication slave on *.* to 'yz'@'%'identified by '123456';


刷新权限
flush privileges;


获取第二个主库的信息 
show master status;

10.在返回第一个主(192.168.10.15)上,连接第二个主库的信息,启动slave,测试成功。

解释:
CHANGE MASTER TO 
MASTER_HOST='192.168.10.16',  (第一个主的ip)
MASTER_USER='yz',   (第一个设置的用户)
MASTER_PASSWORD='123456', (第一个设置的密码)
MASTER_PORT=3306, 
MASTER_LOG_FILE='mysql-bin.000001', (第一个主的信息)
MASTER_LOG_POS=3763;  (第一个主的信息)



#完整命令:
CHANGE MASTER TO 
MASTER_HOST='192.168.10.16', 
MASTER_USER='yz', 
MASTER_PASSWORD='123456', 
MASTER_PORT=3306, 
MASTER_LOG_FILE='mysql-bin.000001', 
MASTER_LOG_POS=3763;


注意:
这两条是在第二个主上的信息,如果不是yes,请仔细看
MASTER_LOG_FILE='mysql-bin.000001',    
MASTER_LOG_POS=3763;


启动server;
start slave;



出现两个yes表现成功
show slave status \G;

连接第一个主成功。 

2.双从搭建

192.168.10.17和192.168.10.18两台主机做12-13步骤!!!!!

12. 现在开始双从步骤,关闭防火墙,setenforce0,下载mariadb*,

关闭防火墙
systemctl stop firewalld        
 
设置防火墙开机启动
systemctl disable firewalld     


关闭setenforce
setenforce 0   

下载mariadb*
yum -y install mariadb*                       

13. 配置数据库文件,设置数据库密码,启动mariadb。

配置数据库文件
vi /etc/my.conf  

#标识符要和其他3个主机不一样,比如主2是3,那您这里不能是三,范围0-60000
server-id=9

#配置排除的库
relay-log=mysql-relay-bin
replicate-ignore-db=mysql
replicate-ignore-db=information_schema
replicate-ignore-db=performance_schema
replicate-ignore-db=sys



配置数据库密码
Enter current password for root (enter for none):按回车
Switch to unix_socket authentication [Y/n] :按回车
Change the root password? [Y/n]:按回车
New password: 123456  #输入设置数据库的密码 123456 在回车
Re-enter new password: 123456  在输一次123456 按回车
Remove anonymous users? [Y/n] 按回车
Disallow root login remotely? [Y/n] 按回车
Remove test database and access to it? [Y/n] 按回车
Reload privilege tables now? [Y/n] 按回车
Thanks for using MariaDB!  数据库密码配置完毕


启动mariadb
systemctl restart mariadb

14.在主库(192.168.10.15)上获取信息。

15.然后返回从1,登录数据库,,然后从1连接主1,启动slave,测试yes。

登录mysql
mysql -uroot -p123456


连接主1
CHANGE MASTER TO 
MASTER_HOST='192.168.10.15', 
MASTER_USER='cdm', 
MASTER_PASSWORD='123456', 
MASTER_PORT=3306, 
MASTER_LOG_FILE='mysql-bin.000001', 
MASTER_LOG_POS=3763;


启动slave;
start slave;


测试yes;
show slave status \G;

16.从2连接主2,和以上(从1连接从二一样的操作),首先获取主2信息。

17.然后返回从2,登录数据库,,然后从1连接主1,启动slave,测试yes。

登录mysql
mysql -uroot -p123456


连接主1
CHANGE MASTER TO 
MASTER_HOST='192.168.10.16', 
MASTER_USER='yz', 
MASTER_PASSWORD='123456', 
MASTER_PORT=3306, 
MASTER_LOG_FILE='mysql-bin.000005', 
MASTER_LOG_POS=1670;


启动slave;
start slave;


测试yes;
show slave status \G;

18.现在4台机子,登录mysql都查看show slave status \G;  如果每一个机子上面有两个yes,那证明你的主从搭建成功,如果看不懂的对方,请私信小编。

3.lvs+keepalived搭建

19.现在搭建(192.168.10.19和192.168.10.20)lvs+keepalved,提示,这两台主机操作基本一样,不一样的只有几个地方,我就拿一台主机做。

20.关闭防火墙,setenforce0,安装软件。

关闭防火墙
systemctl stop firewalld        
systemctl disable firewalld     


关闭setenforce
setenforce 0

下载keepalived
yum -y install keepalived ipvsadm

21.进入目录把里面内容全部删除,重启keepalived。

进入目录
vi  /etc/keepalived/keepalived.conf   加入

解析:
注意:这里和192.168.10.20不一样的地方
global_defs {  
   router_id 1      这里192.168.10.20不要是1,也就是不要和这一台主机相同。
}
vrrp_instance VI_1 {   
    state MASTER    这里192.168.10.20不是MASTER   是BACKUP
    interface ens33
    virtual_router_id 1
    priority 200   优先级也要不一样,192.168.10.20设置50
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 123456
    }
    virtual_ipaddress {    
        192.168.10.200  (虚拟ip)
    }
}



命令:
global_defs {  
   router_id 1
}
vrrp_instance VI_1 {   
    state MASTER
    interface ens33
    virtual_router_id 1
    priority 200
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 123456
    }
    virtual_ipaddress {    
        192.168.10.200  
    }
}



启动keepalived
systemctl restart keepalived

查看ip有没有192.168.10.200(也就是虚拟ip)。

22.进入目录,在最后面加入两个主的ip,重新启动keepalived。

进入目录
vi /etc/keepalived/keepalived.conf    加入

virtual_server 192.168.10.200(这里是虚拟IP) 3306 {
        delay_loop 15
        lb_algo rr
        lb_kind DR
        protocol TCP
        real_server 192.168.10.15(这里是主1的ip) 3306 {
        weight 1
        TCP_CHECK {
                connect_port 3306
                connect_timeout 3
                nb_get_retry 3
                delay_before_retry 4
                }
        }
        real_server 192.168.10.16(这里是主2的ip) 3306 {
        weight 1
        TCP_CHECK {
                connect_port 3306
                connect_timeout 3
                nb_get_retry 3
                delay_before_retry 4
                }
        }
}


启动keepalived
systemctl restart keepalived

23.加载系统内核的服务模块,查看系统模块运行的状态,启动服务。

加载系统内核的服务模块
modprobe ip_vs 



查看系统模块运行的状态
lsmod | grep ip_vs  


启动服务
systemctl restart keepalived

24.查看规则。看看有没有主1和主2.

25.然后返回主1上,添加一个lo:0网卡,systemctl restart network.

编写lo:0
 vi  /etc/sysconfig/network-scripts/ifcfg-lo:0  加入

DEVICE=lo:0
IPADDR=192.168.10.200   (虚拟ip)
NETMASK=255.255.255.255 
ONBOOT=yes


启动服务
systemctl restart network

26.查看静态路由,添加静态路由。

查看静态路由
route -n  

如果没有这个目录,那就下载一个
yum -y install net-tools

添加静态路由
route add -host 192.168.10.200 dev lo:0  

27.最后一台机子(192.168.10.21)测试,安装mariadb*,启动maraidb,配置密码。

安装mariadb*
yum -y install mariadb*

启动mariadb
systemctl restart mariadb



配置数据库密码
Enter current password for root (enter for none):按回车
Switch to unix_socket authentication [Y/n] :按回车
Change the root password? [Y/n]:按回车
New password: 123456  #输入设置数据库的密码 123456 在回车
Re-enter new password: 123456  在输一次123456 按回车
Remove anonymous users? [Y/n] 按回车
Disallow root login remotely? [Y/n] 按回车
Remove test database and access to it? [Y/n] 按回车
Reload privilege tables now? [Y/n] 按回车
Thanks for using MariaDB!  数据库密码配置完毕

28,然后使用命令测试能不能用虚拟ip登录到mysql。

用虚拟ip登录mysql
mysql -h192.168.10.200  -uroot -p 

如果登录不成功,在主1上赋予权限。
grant all privileges on *.* to 'root'@'%' identified by '123456';


如果登录成功,创建一个表。
create database yz;

这个表会在所有的数据库上都有,双主双从上都有。

29,

4.总结

以上就是使用lvs+keepalived和一个双主双从的搭建,双主热备,一个主掉了,另一个主替上,从也一样,使用lvs的虚拟ip,来管理这些主从,如果看不懂的地方,请联系小编,如果需要什么编写,请和小编说。

  • 28
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值