负载均衡集群-Keeplived 介绍与安装和配置使用,实现mysql高可用搭建

51 篇文章 0 订阅
20 篇文章 0 订阅

Keepalived 介绍

Keepalived 的作用是检测服务器的状态,如果有一台服务器宕机,或工作出现故障,Keepalived 将检测到并将有故障的服务器从系统中剔除,同时使用其他服务器代替该服务器的工作,当服务器工作正常后 Keepalived 自动将服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的服务器。



Keepalived 安装


安装 Keepalived 需要的扩展


# 安装依赖
[root@localhost src]# yum install gcc gcc-c++ openssl openssl-devel wget -y

# 进入一个自己建立放安装包的文件夹内下载文件
[root@localhost src]# wget https://www.keepalived.org/software/keepalived1.2.18.tar.gz

用 wget 下载不了,直接用浏览器打开下载再上传上来

直接访问即可下载:https://www.keepalived.org/software/keepalived1.2.18.tar.gz

官网:https://www.keepalived.org

下载站点:https://www.keepalived.org/download.html


解压 Keepalived 并安装


[root@localhost src]# tar -zxvf keepalived-1.2.18.tar.gz 
[root@localhost src]# cd keepalived-1.2.18
[root@localhost keepalived-1.2.18]# ./configure --prefix=/usr/local/keepalived
[root@localhost keepalived-1.2.18]# make && make install


将 Keepalived 安装成 Linux 系统服务

因为没有使用 Keepalived 的默认路径安装(默认是/usr/local),安装完成之后,需要做一些工作,复制默认文件到默认路径:


[root@localhost keepalived-1.2.18]# mkdir /etc/keepalived
[root@localhost keepalived-1.2.18]# cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/

复制 Keepalived 服务脚本到默认的地址


[root@localhost keepalived-1.2.18]# cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
[root@localhost keepalived-1.2.18]# cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
[root@localhost keepalived-1.2.18]# ln -s /usr/local/keepalived/sbin/keepalived /usr/sbin/

设置 Keepalived 服务开机启动


[root@localhost keepalived-1.2.18]# chkconfig keepalived on



Keepalived 配置文件

配置文件为:keepalived.conf

按照上面的安装,配置文件在:/etc/keepalived/keepalived.conf


Keepalived 主机配置


! Configuration File for keepalived
global_defs {
	router_id LVS_MASTER
}

vrrp_script chk_haproxy {
	script "/etc/keepalived/haproxy_check.sh" ## 检测 haproxy 状态的脚本路径
	interval 2 ## 检测时间间隔
	weight 2 ## 如果条件成立,权重+2
}

vrrp_instance VI_1 {
	state MASTER
	interface ens33
	virtual_router_id 79
	priority 100
	advert_int 1
	nopreempt
	authentication {
		auth_type PASS
		auth_pass 1234
	}
	virtual_ipaddress {
		192.168.183.111
	}
	track_script {
		chk_haproxy
	}
}

# 写VIP virtual_server,只配置本地机器
virtual_server 192.168.29.111 3307 {# 定义虚拟服务器,地址与上面的virtual_ipaddress相同
	delay_loop 3 # 健康检查时间间隔,3秒
	lb_algo rr # 负载均衡调度算法:rr|wrr|lc|wlc|sh|dh|lblc
	lb_kind DR # 负载均衡转发规则:NAT|DR|TUN
	# persistence_timeout 5 # 会话保持时间5秒,动态服务建议开启
	protocol TCP # 转发协议protocol,一般有tcp和udp两种
	# real_server 为当前服务器的IP地址
	real_server 192.168.183.180 3307 {
		weight 1 # 权重越大负载分越大,0表示失效
		TCP_CHECK {
			connect_timeout 3
			nb_get_retry 3
			delay_before_retry 3
			connect_port 3306
		}
	}
}


Keepalived 从服务配置


! Configuration File for keepalived
global_defs {
	router_id LVS_MASTER
}

vrrp_script chk_haproxy {
	script "/etc/keepalived/haproxy_check.sh" ## 检测 haproxy 状态的脚本路径
	interval 2 ## 检测时间间隔
	weight 2 ## 如果条件成立,权重+2
}

vrrp_instance VI_1 {
	state BACKUP
	interface ens33
	virtual_router_id 79
	priority 90
	advert_int 1
	nopreempt
	authentication {
		auth_type PASS
		auth_pass 1234
	}
	virtual_ipaddress {
		192.168.183.111  #代表 Keepalived 需要使用到的IP,和主服务的一致
	}
	track_script {
		chk_haproxy
	}
}

# 写VIP virtual_server,只配置本地机器
virtual_server 192.168.29.111 3307 {# 定义虚拟服务器,地址与上面的virtual_ipaddress相同
	delay_loop 3 # 健康检查时间间隔,3秒
	lb_algo rr # 负载均衡调度算法:rr|wrr|lc|wlc|sh|dh|lblc
	lb_kind DR # 负载均衡转发规则:NAT|DR|TUN
	# persistence_timeout 5 # 会话保持时间5秒,动态服务建议开启
	protocol TCP # 转发协议protocol,一般有tcp和udp两种
	# real_server 当前服务器的IP地址
	real_server 192.168.183.181 3307 {
		weight 1 # 权重越大负载分越大,0表示失效
		TCP_CHECK {
			connect_timeout 3
			nb_get_retry 3
			delay_before_retry 3
			connect_port 3306
		}
	}
}



MySQL高可用搭建


设置 Haproxy 状态脚本

注意下方的路径是否与你的一致

Haproxy 安装与配置介绍:https://blog.csdn.net/qq_39408664/article/details/119487726


[root@localhost keepalived]# touch /etc/keepalived/haproxy_check.sh
[root@localhost keepalived]# vi /etc/keepalived/haproxy_check.sh


#!/bin/bash
START_HAPROXY="/usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg" #haproxy启动命令
LOG_FILE="/usr/local/keepalived/log/haproxy-check.log" # 日志文件
HAPS=`ps -C haproxy --no-header |wc -l` # 检测haproxy的状态,0代表未启动,1已经启动
date "+%Y-%m-%d %H:%M:%S" >> $LOG_FILE #在日志文件当中记录检测时间
echo "check haproxy status" >> $LOG_FILE # 记录haproxy的状态
if [ $HAPS -eq 0 ];then #执行haproxy判断
	echo $START_HAPROXY >> $LOG_FILE #记录启动命令
	/usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg #启动haproxy
	sleep 3
	if [ `ps -C haproxy --no-header |wc -l` -eq 0 ];then
		echo "start haproxy failed, killall keepalived" >> $LOG_FILE
		killall keepalived
		service keepalived stop
	fi
fi

Haproxy 状态检测脚本不执行问题,如果是使用的 service keepalived start 或者是 systemctl start keepalived 方式启动,脚本可能会不执行,可以使用 keepalived -f /etc/keepalived/keepalived.conf 方式启动 Keepalived 。


Keepalived 配置注意点 - 配置完成但是 IP 不生效

  1. 查看虚拟机 / 机器系统时间是否一致。
  2. virtual_router_id 路由 id 不对,不能冲突。可以通过 /var/log/messages 查看次错误



测试使用

在本地使用命令模式 win+R 键,进入MySQL目录,需要安装,或者下载phpstudy

在这里插入图片描述
可以看到,可以均衡的分配到各个服务器去。

现在开启 Keepalived 即可使用分配的 IP 访问:192.168.183.111 :


[root@localhost keepalived]# service keepalived start
Starting keepalived (via systemctl):       [  确定  ]

注:每个服务都需要开启。

在主服务上查看IP,ip addr / ip a
在这里插入图片描述
看到有配置到的IP即开启成功。

再通过 配置的IP访问mysql:
在这里插入图片描述




  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值