keepalived mysql配置,mysql的keepalived连接配置

前提:两台主机形成互为主从的配置、主机ip固定

tip: 如果在docker容器里配置的话,要确保生成容器时使用了--privileged=true 选项。

一、 安装keepalived

下载keepalive所依赖的组件(如果没有,后边安装的时候会报各种错误、解决措施就是装这些组件)

yum install -y gcc openssl openssl-devel popt popt-devel libnl libnl-devel

yum install -y ipvsadm

yum install -y libnfnetlink-devel

yum install -y rsyslog

下载keepalived 包

wget -P /usr/local/etc/ http://www.keepalived.org/software/keepalived-1.4.2.tar.gz

cd /usr/local/etc/

tar -xzvf keepalived-1.4.2.tar.gz

mv keepalived-1.4.2 keepalived

cd keepalived

./configure

make

make install

创建链接(keepalived安装位置与运行需要的默认位置不一致,所以要做链接或拷贝)

mkdir /etc/keepalived

## 备份keepalived主体文件

test -f /usr/local/etc/keepalived/keepalived.conf.bak || cp /usr/local/etc/keepalived/keepalived.conf /usr/local/etc/keepalived/keepalived.conf.bak

## 创建链接

test -f /etc/keepalived/keepalived.conf || ln -s /usr/local/etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf

chmod 664 /etc/keepalived/keepalived.conf

test -f /etc/sysconfig/keepalived || ln -s /usr/local/etc/sysconfig/keepalived /etc/sysconfig/keepalived

test -f /sbin/keepalived || ln -s /usr/local/sbin/keepalived /sbin/keepalived

设置开机自启

## 复制keepalived 服务启动脚本到开机启动脚本目录中

test -f /etc/rc.d/init.d/keepalived || cp /usr/local/etc/keepalived/keepalived/etc/init.d/keepalived /etc/rc.d/init.d/keepalived

## 授权

chmod +x /etc/rc.d/init.d/keepalived

## 下面两条指令都是设置开机自启的方式,一般来说第二条会执行成功,第一条会报错。不用管

kconfig keepalived on

systemctl enable keepalived.service

service keepalived start

tip:上述所有指令可以一条条执行,也可以写一个shell脚本放在一起按顺序批量执行。

修改keepalived日志存放位置

默认日志存放在/var/log/messages中。更改为/var/log/keepalived.log

vim /etc/sysconfig/keepalived

## 将最后一行 KEEPALIVED_OPTIONS="-D" 注释掉

## 写入

KEEPALIVED_OPTIONS="-D -S 0"

vim /etc/rsyslog.conf

## 找到 # Save boot messages also to boot.log 字样,在下边追加(或者直接在末尾追加)

local0.* /var/log/keepalived.log

## 重启rsyslog

systemctl restart rsyslog.service

## 重启keepalived

service keepalived restart

至此、keepalived安装完成、可以使用service keepalived status命令查看运行情况,如果未能正常运行,查看日志寻找原因。(只要按步骤安装,一般到这里不会出错)

二、 下面开始配置keepalived

我这里使用的两台主机ip分别为 172.30.0.2、172.30.0.3,网卡均为eth0。想要配置的虚拟ip为172.30.0.88。

ps:网上关于配置文件keepalived.conf的写法五花八门,有的会做邮箱通知、心跳检测、切换到各种状态要执行的功能。有的实现了防止主机竞争、防脑裂。一开始的时候都想试试,最终都没成功。所以最后还是回到最基础的功能:参照着keepalived安装时产生的keepalived.conf做类似的最简单的配置(在安装keepalived的第3步创建链接时,曾备份主体文件,将原有的keepalived.conf备份成了keepalived.conf.bak)

修改/usr/local/etc/keepalived/keepalived.conf的内容如下

! Configuration File for keepalived

global_defs {

notification_email {

tangsh@qq.com ##这里的邮箱就是写着玩,实际上并不会收到邮件

}

notification_email_from HAproxy01@one.com

smtp_server 127.0.0.1

smtp_connect_timeout 30

router_id mysql_HA

vrrp_skip_check_adv_addr

## 此项注释掉,否则虚拟ip无法ping通

## vrrp_strict

vrrp_garp_interval 0

vrrp_gna_interval 0

}

vrrp_instance VI_1 {

## 定义:实例角色,都写为BACKUP,通过优先级来竞争MASTER

state BACKUP

## 定义:承载VIP地址的物理接口

interface eth0

## 定义:承载VIP地址的物理接口

virtual_router_id 51

## 定义:优先级初始值、多个节点应不同

priority 100

## 定义:VRRP通知报文的时间间隔

advert_int 1

## 设置: 验证信息(两个节点必须一致)

authentication {

auth_type PASS

auth_pass 1111

}

virtual_ipaddress {

172.30.0.88 ##虚拟ip

}

}

virtual_server 172.30.0.88 3306 {

delay_loop 6

## 这两项注释掉,是看别人说的,想知道效果的话取消注释尝试一下

## lb_algo rr

## 这一项不能注释,否则无法登陆端口

lb_kind NAT

persistence_timeout 50

protocol TCP

real_server 172.30.0.2 3306 {

## 权重

weight 1

## 自杀脚本,出现问题关掉本节点的keepalived服务

notify_down /etc/keepalived/mysql_down.sh

TCP_CHECK {

connect_timeout 10

nb_get_retry 3

delay_before_retry 3

connect_port 3306

}

}

real_server 172.30.0.3 3306 {

weight 1

notify_down /etc/keepalived/mysql_down.sh

TCP_CHECK {

connect_timeout 10

nb_get_retry 3

delay_before_retry 3

connect_port 3306

}

}

}

tip:以上内容可以根据自己的实际情况更改相应ip。可以在windows下编辑好。通过docker命令:

docker cp 文件地址 容器id:文件地址 直接拷贝到容器中(同样可以从容器拷贝文件出来,不管容器是否开启都可以)

docker cp E:/Docker/keepalived.conf d0:/usr/local/etc/keepalived/

上面的脚本拷贝到容器后应修改 priority 100 为不同的值。

## 创建配置文件里所需要的mysql_down脚本

cat > /etc/keepalived/mysql_down.sh <

#!/bin/bash

service keepalived stop

EOF

chmod +x /etc/keepalived/mysql_down.sh

配置完成后重启keepalived.此时可能会重启失败,查看日志如果是报如下错误:

Configuration file '/etc/keepalived/keepalived.conf' is not a regular non-executable file。

是由于keepalived.conf权限问题造成的,授权即可解决(链接文件在每次重建指向文件后都要重新授权)

chmod 644 /etc/keepalived/keepalived.conf

cb68831b7738

三、 检查是否配置成功

如果前边的步骤顺利完成,两个节点均能正常启动keepalived,那其中一台节点(优先级更高的,我这里是172.30.0.3)会链接到虚拟ip上。查看网卡配置。ip add | grep eth0(eth0为配置文件配置的网卡)

cb68831b7738

可以看到,172.30.0.88已经挂载到网卡上了。

使用第三台主机连接到虚拟ip(宿主机不行,只能是容器),可以正常登陆。

cb68831b7738

接下来模拟一下故障发生:

初始时刻,172.30.0.3的优先级更高,虚拟ip在此节点挂载。手动执行自杀脚本。可以看到keepalived服务被关闭,mysql服务未关闭(因为自杀脚本关掉的是keepalived服务),查看ip挂载发现虚拟ip消失。

cb68831b7738

到172.30.0.2节点查看ip挂载,发现虚拟ip挂载到了此节点上。

cb68831b7738

假设故障解决,重启0.3节点的keepalived服务,再次查看ip,虚拟ip重新回到172.30.0.3节点。

cb68831b7738

再模拟mysql服务挂掉的情况:关掉0.3节点的mysql服务,发现keepalived也被关闭(自杀脚本), ip挂载再次消失。到0.2节点可以看到虚拟ip重新挂载。

cb68831b7738

至此,keepalived配置完成,且可以正常运行。

四、 存在的问题

不知道是否是docker容器的原因,由于主机和容器无法通信(之前的通信是基于暴露容器端口进行的,这里虚拟ip无法按照之前的方法形成端口映射,也可能是暂时没找到方法)。此虚拟ip只能在容器内访问,所以这里的虚拟ip可用性很小,但熟悉了整个配置过程,如果在真正的服务器上配置的话,应该不会存在这个问题。

前边也提到了,有很多配置项没有尝试,包括邮件发送、心跳检测、防脑裂。这几个都是比较重要的,有兴趣可以自行尝试。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在使用Keepalived来实现MySQL高可用性时,可以使用Keepalived来管理MySQL的虚拟IP地址。以下是一个基本的Keepalived配置示例,其中包含了两个节点(192.168.1.10和192.168.1.11),它们将共享一个虚拟IP地址(192.168.1.100),并使用MySQL主从复制来实现数据同步: 1. 安装Keepalived 在Linux环境下,可以使用以下命令安装Keepalived: ``` sudo apt-get install keepalived ``` 2. 配置MySQL主从复制 在MySQL主从复制中,需要将一个MySQL实例作为主服务器,另一个MySQL实例作为从服务器。以下是一个简单的MySQL主从复制配置示例: - 192.168.1.10为主服务器,配置文件my.cnf中添加以下配置: ``` server-id=1 log-bin=mysql-bin binlog-do-db=mydatabase ``` - 192.168.1.11为从服务器,配置文件my.cnf中添加以下配置: ``` server-id=2 relay-log=mysql-relay-bin log-slave-updates=1 read-only=1 ``` 其中,mydatabase为需要同步的数据库名称。 3. 配置Keepalived Keepalived配置文件位于/etc/keepalived/keepalived.conf。以下是一个基本的Keepalived配置示例,其中包含了两个节点(192.168.1.10和192.168.1.11),它们将共享一个虚拟IP地址(192.168.1.100): ``` ! Configuration File for keepalived global_defs { router_id LVS_DEVEL } vrrp_script chk_mysql { script "/etc/keepalived/check_mysql.sh" interval 2 weight 2 } vrrp_instance VI_1 { state MASTER interface eth0 virtual_router_id 52 priority 101 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.1.100 } track_script { chk_mysql } } virtual_server 192.168.1.100 3306 { delay_loop 6 lb_algo wrr lb_kind NAT persistence_timeout 50 protocol TCP real_server 192.168.1.10 3306 { weight 1 TCP_CHECK { connect_timeout 10 nb_get_retry 3 delay_before_retry 3 connect_port 3306 } } real_server 192.168.1.11 3306 { weight 1 TCP_CHECK { connect_timeout 10 nb_get_retry 3 delay_before_retry 3 connect_port 3306 } } } ``` 在上面的配置中: - vrrp_script:定义监控脚本,这里使用了一个名为check_mysql.sh的自定义脚本,用来检测MySQL的运行状态。 - vrrp_instance:定义VRRP实例,这里定义了一个名为VI_1的实例,它的状态为MASTER。 - virtual_ipaddress:定义虚拟IP地址。 - track_script:定义跟踪监控脚本。 - virtual_server:定义虚拟服务器,这里定义了一个IP地址为192.168.1.100,端口为3306的虚拟服务器。 - real_server:定义实际服务器,这里定义了两个实际服务器,它们的IP地址分别为192.168.1.10和192.168.1.11,端口为3306。 4. 启动Keepalived 在完成配置后,可以使用以下命令启动Keepalived: ``` sudo systemctl start keepalived ``` 如果要在系统启动时自动启动Keepalived,可以使用以下命令: ``` sudo systemctl enable keepalived ``` 以上是一个简单的Keepalived配置示例,实际使用中可能需要根据实际情况进行调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值