主要是利用的keepalived为nginx做的集群配置
1.下载依赖
在开始做配置前我们需要先下载几个依赖文件,这里我把包提供到网盘中,记得所有的都要下载
提取链接:阿里云盘分享
提取码:6v7x
2.安装依赖
将下载好的所有安装包导入到你需要安装集群的linux系统中
上传本地文件到服务器
scp /path/filename username@servername:/path
例如scp /var/www/test.php root@192.168.0.101:/var/www/ #把本机/var/www/目录下的test.php文件上传到192.168.0.101这台服务器上的/var/www/目录中,例如:
离线安装gcc
$ cd /data/gcc
$ rpm -ivh *.rpm --force
离线安装openssl-devel
$ cd /data/openssl-devel
$ rpm -ivh *.rpm --force
离线安装keepalived
$ cd /data/keepalived
$ rpm -ivh *.rpm --force
(这里说一下为什么是*.rpm:因为需要安装的服务他们之间有循环依赖问题,所以如果不是安装所有的话,可能会出现安装报错/失败的问题)
安装完成之后首先停止服务:
systemctl stop keepalived 停止
3.配置keepalived
配置文件与重要参数说明
首先切换到配置文件的目录下 cd /etc/keepalived/keepalived.conf
这里以master配置为例,配置如下:
! Configuration File for keepalived
global_defs {
script_user root #指定脚本运行的用户为root用户
enable_script_security #启用脚本安全检查
router_id nginx-140 #主机标识
}
vrrp_script chk_bl {
script "/etc/keepalived/chk_bl.sh" #自己写的监测脚本位置,脚本需要授权
interval 2 #间隔2秒执行一次脚本
weight -2 #查看weight的解释,控制权限
}
vrrp_instance VI_1 { #指定VRRP实例
state MASTER #只有BACKUP和MASTER。MASTER为工作状态,BACKUP是备用状态
interface ens192 #interface:为网卡接口:可通过ip addr查看自己的网卡接口,修改为本机网卡名称
virtual_router_id 60 #virtual_router_id:虚拟路由标志。同组的virtual_router_id应该保持一致
priority 102 #priority:设置本节点的优先级,优先级高的为master
advert_int 2 #通告间隔,默认为1秒
authentication { #设置验证类型和密码,两个节点必须一致
auth_type PASS
auth_pass 0101
}
virtual_ipaddress { #对外提供服务的IP配置,虚拟ip地址
192.168.1.81
}
track_script {
chk_bl #检查是否切换
}
}
这里的chk_bl是一个sh脚本文件,文件内容如下:
可以直接用,放到对应目录下即可:
#!/bin/bash
function ck() {
A=`ps -C nginx --no-header | wc -l`
if [ $A -eq 0 ]; then
exit 1
else
exit 0
fi
}
ck
从配置只需要修改state 和主机标识即可
同时为了防止jar包服务宕机导致在keepalived存活的情况下也访问不到服务,我们还需要在nginx的配置中配置upstream
以我如下配置为例子:
#认证
upstream auth {
server 10.237.2.33:9090 max_fails=1 fail_timeout=50000;
server 10.237.2.34:9090 max_fails=1 fail_timeout=50000;
server 10.237.2.35:9090 max_fails=1 fail_timeout=50000;
}
# 管理
upstream admin {
server 10.237.2.38:10010 max_fails=1 fail_timeout=50000;
server 10.237.2.39:10010 max_fails=1 fail_timeout=50000;
}
不同的服务器中这里的配置可能有些出入,你只需要找到upstream,并在其内部添加你的服务器ip端口即可,注意添加完成之后重启nginx然后再重启keepalived(因为keepalived保证nginx高可用的前提是nginx)
配置完成之后启动keepalived即可,附上启停命令:
systemctl start keepalived 启动
systemctl stop keepalived 停止
systemctl restart keepalived 重启
systemctl status keepalived 查看状态