由于公司业务需求,需要搭建认证服务器完成客户登录我们系统的功能,考虑到认证服务器的重要性,故采用两台服务器对客户进行认证,但是考虑到两台认证服务器的数据需要同步,而人工的数据同步也不切实际,由于我们公司使用的是Mysql数据库,而mysql 又很好的提供了同步功能,现将mysql 数据库同步的实践分享给大家。
一、环境介绍
MYSQL-A-IP: 172.17.100.201
MYSQL-B-IP: 172.17.100.202
数据库实例 : otpdb
默认情况下两台机器的iptables 没有开,如果开启的话,需要开启对应端口
二、修改mysql 配置文件
MYSQL-A: 添加如下内容:
server-id = 1
log-bin =mysql-bin
binlog-do-db =otpdb /需要同步的数据库实例名
binlog-ignore-db=mysql /不需要同步的实例名
binlog-ignore-db=information_shcema
auto-increment-increment=10
auto-increment-offset=1
skip-name-resolve
replicate-ignore-db=mysql
replicate-ignore-db=information_schema
relay_log=mysql-relay-bin
log-slave-updates=on
MYSQL-B: 添加如下内容:
server-id = 2 /此处必须与A机器不同
log-bin =mysql-bin
replicate-do-db =otpdb
replicate-do-db =otpdb
replicate-ignore-db=mysql
replicate-ignore-db=information_shcema
auto-increment-increment=10
auto-increment-offset=2 /此处必须与A机器不同
skip-name-resolve
binlog-ignore-db=mysql
binlog-ignore-db=information_shcema
relay_log=mysqld-relay-bin
log-slave-updates=on
修改完成后,重启mysql 数据库。
三、设置同步:
登录数据库: mysql -u root -p
创建同步用户:分别在A机器和B机器执行同样的命令
GRANTreplication slave on *.* TO ‘tongbu”@’172.31.17.182’ IDENTIFIED BY ‘123’;
Flushprivileges;
设置同步初始信息:
A机器:
Change master to master_host=‘172.17.100.202’,(该ip地址为对方的ip,注意不要写成自己的ip地址)
master_user=‘tongbu’,
master_password=‘123’,
master_log_file=‘mysql-bin.000008’, (该值通过show master status \G; 查询,注意此处查询实在另一台机器上查询)
master_log_pos=487; (该值通过show master status \G; 查询,注意此处查询实在另一台机器上查询)
B机器:
Change master to master_host=‘172.17.100.201’,(该ip地址为对方的ip,注意不要写成自己的ip地址)
master_user=‘tongbu’,
master_password=‘123’,
master_log_file=‘mysql-bin.000001’, (该值通过show master status \G; 查询,注意此处查询实在另一台机器上查询)
master_log_pos=354; (该值通过show master status \G; 查询,注意此处查询实在另一台机器上查询)
修改完成配置后,需要重启数据库;
四、插入验证
在A机器插入一张表BBB,命令参考:Create table BBB(number int(10),name varchar(255));
show tables;
同样的到B机器: show tables; 可以看到也自动添加了表BBB,
在B机器上删除表BBB,命令参考:delete table bbb;
同样的A机器上的表BBB也被自动删除。
至此,mysql 同步的部分就已经完成了!
但是,到此还没有完成我们的需求,由于认证服务器添加数据的ip地址只有一个,所以在A机器挂掉以后,并不会自动去连接B服务器,所以此时我们就需要用到keepalived 技术了,而keepalived实现的功能就是虚拟出一个新的ip的,比如我此处用的是172.17.100.203,当我们连接该ip地址的时候,系统默认的会去连接172.17.100.201机器,但是当172.17.100.201这台机器挂掉之后,系统就会连接到172.17.100.202上,这样就能够很好的完成我们的需求了。
五、keepalived配置
下载安装keepalived ,安装之前需要安装一些依赖的包: prce-devel openssl-devel popt-devel ,安装的过程省略。
配置keepalived:
A 机器: vi /etc/keepalived:
vrrp_instance VI_1 {
state MASTER #指定A节点为主节点 备用节点上设置为BACKUP即可
interface eth0 #绑定虚拟IP的网络接口
virtual_router_id 51 #VRRP组名,两个节点的设置必须一样,以指明各个节点属于同一VRRP组
priority 100 #主节点的优先级(1-254之间),备用节点必须比主节点优先级低
advert_int 1 #组播信息发送间隔,两个节点设置必须一样
authentication { #设置验证信息,两个节点必须一致
auth_type PASS
auth_pass 1111
}
virtual_ipaddress { #指定虚拟IP, 两个节点设置必须一样
172.17.100.203/24
172.17.100.201 /24
172.17.100.202 /24
}
}
B机器:
vrrp_instance VI_1 {
state BACKUP #指定A节点为主节点 备用节点上设置为BACKUP即可
i nterface eth0 #绑定虚拟IP的网络接口
virtual_router_id 51 #VRRP组名,两个节点的设置必须一样,以指明各个节点属于同一VRRP组
priority 50 #主节点的优先级(1-254之间),备用节点必须比主节点优先级低
advert_int 1 #组播信息发送间隔,两个节点设置必须一样
authentication { #设置验证信息,两个节点必须一致
auth_type PASS
auth_pass 1111
}
virtual_ipaddress { #指定虚拟IP, 两个节点设置必须一样
172.17.100.203/24
172.17.100.202//24
172.17.100.201 /24
}
}
配置完成后重启keepalived服务器即可,至此双击热备的需求就实现了!