一、MySQL+keepalived高可用
centos6基础环境
MySQL互为主从
在A、B上操作:
# 安装:
[root@ localhost ~]# yum -y install mysql mysql-server
# 修改配置文件
[root@ localhost ~]# vim /etc/my.cnf
# 添加二进制日志:
log-bin=mysql-bin //开启二进制日志
server-id=1 //mysql的id,默认是1,唯一的,建议使用ip最后一段
relay-log=mysql-relay //开启中继日志
# 重启mysql
[root@ localhost ~]# service mysqld restart
# 登录mysql,新建同步用户:
mysql -uroot -p
mysql> grant replication slave on *.* to 'tom'@'%' identified by '123456';
mysql> flush privileges;
# 初始化bin-log日志
mysql> reset master;
# 查看最新bin-log日志:
mysql> show master status;
图中的mysql-bin.000001就是最新的日志文件名称,Position是bin日志结束的位置,这两个值会在主机B中使用。
主机A配置完毕,切记为了保持主从的一致性,先不要操作主机A mysql数据库,待主机B配置完成且设置同步后才可以进行操作。
主机B配置:
# 修改配置文件:
[root@ localhost ~]# vim /etc/my.cnf
log-bin=mysql-bin
server-id=2
relay-log=mysql-relay
# 重启mysql服务器
[root@ localhost ~]# service mysqld restart
# 增加同步用户:
mysql -uroot –p
mysql> grant replication slave on *.* to 'tom'@'%' identified by '123';
mysql> flush privileges;
# 初始化bin-log日志:
mysql> reset master;
# 查看bin-log日志:
mysql> show master status;
mysql> change master to
master_host='192.168.189.141',
master_user='tom',
master_password='123',
master_log_file='mysql-bin.000001',
master_log_pos=120;
这里的master_host是指主机B的ip地址,master_uesr是执行同步操作的用户名,master_password是执行同步的用户密码,master_log_file是主机B的bin-log日志,master_log_pos是从bin-log日志开始同步的位置。
# 开启同步:
mysql> start slave;
mysql> change master to
master_host='192.168.189.140',
master_user='tom',
master_password='123',
master_log_file='mysql-bin.000001',
master_log_pos=120;
mysql> start slave;
mysql> show slave status\G;
# 在A上新建一个数据库
mysql> create database test1;
# 在B上查看
mysql>show databases;
mysql> create database test1;
#在A上查看
mysql>show databases;
二、安装Keepalived
MASTER的IP: 10.0.0.21
BACKUP的IP: 10.0.0.22
# 主上的操纵
[root@ localhost ~]# yum -y install keepalived
# 修改配置文件
[root@ localhost ~]# vim /etc/keepalived/keepalived.conf
vrrp_instance VI_1 {
state MASTER \\主机的初始身份:MASTER/BACKUP
interface eth0 \\VIP绑定网卡设备
virtual_router_id 51 \\路由广播ID,同步ID可以接受广播
priority 100 \\优先级,越大优先级越高,主的初始优先级必须要大于备份的主机
advert_int 1
nopreempt
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
10.0.0.30 \\VIP地址
}
}
virtual_server 10.0.0.30 3306 { \\虚拟服务器,IP地址是VIP,端口是对应服务的端口
delay_loop 6
nat_mask 255.255.255.0
protocol TCP
real_server 10.0.0.21 3306 { \\真实服务器的ip和端口
weight 1
notify_down /root/kill.sh \\检测到down状态时要执行的脚本,内容为停止keepalived
TCP_CHECK { \\健康检查模块,通过TCP检查
connect_port 3306 \\TCP要检查的端口
connect_timeout 3 \\超时时间
nb_get_retry 3 \\重试次数
delay_before_retry 3 \\检查轮询周期时间
}
}
}
# 并编写脚本
[root@ localhost ~]# vim /root/kill.sh
# 脚本内容:
#!/bin/bash
service keepalived stop
# 给脚本加权限
[root@ localhost ~]# chmod +x /root/kill.sh
# 重启keepalived
[root@ localhost ~]# service keepalived restart
# 重启成功后,通过ip a查看VIP是否生成
[root@ localhost ~]# ip a
备份主机操作
# 拷贝配置文件到主机
[root@ localhost ~]# scp root@**10.0.0.21**:/etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf
# 编辑,只需更改几个参数即可
[root@ localhost ~]# vim /etc/keepalived/keepalived.conf
vrrp_instance VI_1 {
state BACKUP \\主机的初始身份:MASTER/BACKUP
interface eth0 \\VIP绑定网卡设备
virtual_router_id 51 \\路由广播ID,同步ID可以接受广播
priority 90 \\优先级,越大优先级越高,主的初始优先级必须要大于备份的主机
advert_int 1
nopreempt
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
10.0.0.30 \\VIP地址
}
}
virtual_server 10.0.0.30 3306 { \\虚拟服务器,IP地址是VIP,端口是对应服务的端口
delay_loop 6
nat_mask 255.255.255.0
protocol TCP
real_server 10.0.0.22 3306 { \\真实服务器的ip和端口
weight 1
notify_down /root/kill.sh \\检测到down状态时要执行的脚本,内容为停止keepalived
TCP_CHECK { \\健康检查模块,通过TCP检查
connect_port 3306 \\TCP要检查的端口
connect_timeout 3 \\超时时间
nb_get_retry 3 \\重试次数
delay_before_retry 3 \\检查轮询周期时间
}
}
}
配置文件配置完毕后保存退出
# 并编写脚本
[root@ localhost ~]# vim /root/kill.sh
#脚本内容:
#!/bin/bash
service keepalived stop
# 给脚本加权限
[root@ localhost ~]# chmod +x /root/kill.sh
# 重启keepalived
[root@ localhost ~]# service keepalived restart
# 重启成功后,通过ip a查看VIP是否生成
[root@ localhost ~]# ip a
# 查看日志
[root@ localhost ~]# tail -f /var/log/messages