centos安装与配置keepalived+nginx高可用
一、安装启动keepalived
1、下载keepalived
在centos系统中,用wget下载最新版本:
mkdir tool
cd tool
wget https://www.keepalived.org/software/keepalived-2.0.19.tar.gz
2、解压安装keepalived
cd tool
tar -zxvf keepalived-2.0.19.tar.gz -C /usr/local/
yum install -y openssl openssl-devel(需要安装一个软件包)
cd keepalived-2.0.19/ && ./configure --prefix=/usr/local/keepalived
make && make install
3、把keepalived服务配置成开机自启动
将keepalived安装成Linux系统服务,因为没有使用keepalived的默认安装路径(默认路径:/usr/local),安装完成之后,需要做一些修改工作:
首先创建文件夹,将keepalived配置文件进行复制:
mkdir /etc/keepalived
cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
然后复制keepalived脚本文件:
#高版本init.d不存在,可以忽略
cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
ln -s /usr/local/sbin/keepalived /usr/sbin/
ln -s /usr/local/keepalived/sbin/keepalived /sbin/
可以设置开机启动:chkconfig keepalived on,到此我们安装完毕!
4、启动关闭重启
service keepalived start
service keepalived stop
service keepalived restart
5、查看安装启动状态,如下启动成功
systemctl status keepalived.service
二、配置keepalived+nginx实现高可用
1、假设keepalived,nginx安装成功,我们开始配置高可用,首先编辑我们时候copy到etc目录的配置文件
vim /etc/keepalived/keepalived.conf
2、在原配置文件keepalived.conf,增加如下画线配置,保存重启keepalived
! Configuration File for keepalived
vrrp_script chk_nginx {
script "/etc/keepalived/nginx_check.sh" #运行脚本,脚本内容下面有,就是起到一个nginx宕机以后,自动开启服务
interval 2 #检测时间间隔
weight -20 #权重
}
# 定义虚拟路由,VI_1 为虚拟路由的标示符,自己定义名称
vrrp_instance VI_1 {
state MASTER #来决定主从
interface ens33 # 绑定虚拟 IP 的网络接口,根据自己的机器填写
virtual_router_id 222 # 虚拟路由的 ID 号
mcast_src_ip 192.168.2.130 #填写本机ip
priority 100 # 节点优先级,主要比从节点优先级高
nopreempt # 优先级高的设置 nopreempt 解决异常恢复后再次抢占的问题
advert_int 1 # 组播信息发送间隔,两个节点设置必须一样,默认 1s
authentication {
auth_type PASS
auth_pass 1111
}
# 将 track_script 块加入 instance 配置块
track_script {
chk_nginx #执行 Nginx 监控的服务
}
virtual_ipaddress {
192.168.2.222 # 虚拟ip,也就是解决写死程序的ip怎么能切换的ip,也可扩展,用途广泛。可配置多个。
}
}
3、nginx_check.sh文件存在/etc/keepalived目录下/etc/keepalived/nginx_check.sh,内容如下
#!/bin/bash
A=`ps -C nginx 每no-header |wc -l`
if [ $A -eq 0 ];then
/usr/local/nginx/sbin/nginx
sleep 2
if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
killall keepalived
fi
fi
4、如果配置成功,手动 关闭nginx进程,keepalived也会帮我们自动启动 /usr/local/nginx/sbin/nginx,说明配置成功
注意,如果启动keepalived没有报错,但nginx启动失败,大部分原因可能 nginx_check.sh没有权限,也可能是文档格式错误
解决方法:https://blog.csdn.net/chuchanlu6163/article/details/100874598
5、从机也要安装相同的配置的keepalived+nginx
! Configuration File for keepalived
global_defs {
router_id bhz006
}
vrrp_script chk_nginx {
script "/etc/keepalived/nginx_check.sh"
interval 2
weight -20
}
vrrp_instance VI_1 {
state BACKUP
interface eth7
virtual_router_id 173
mcast_src_ip 192.168.1.173
priority 90 #优先级配置
advert_int 1
authentication {
auth_type PASS
auth_pass 111
}
track_script {
chk_nginx
}
virtual_ipaddress {
192.168.2.220 #主从要一致
}
}
6、我们可以测试在nginx出现问题的情况下,实现切换,这个时候我们只需要把nginx的配置文件进行修改,让其变得不可用,然后强杀掉nginx进程即可,发现也会实现自动切换服务器节点。
三、如何查看keepalived运行日志?
1、修改vim /etc/sysconfig/keepalived,最后一行为
KEEPALIVED_OPTIONS="-D -d -S 0"
2、修改vi /etc/rsyslog.conf 文件,在最后一行增加
local0.* /var/log/keepalived.log
3、重启rsyslog ,如果不知道如何重启rsyslog,首先ps -ef|grep rsyslog,找到该启动进程
然后,/usr/sbin/rsyslogd -s stop 、/usr/sbin/rsyslogd,有时候用/usr/sbin/rsyslogd restart命令重启失效
4、然后重启keepalived
service keepalived stop
service keepalived start
或者
service keepalived restart
5、然后vim /var/log/keepalived.log就可以看到keepalived日志的的生成
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】博客园携手 AI 驱动开发工具商 Chat2DB 推出联合终身会员
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET 依赖注入中的 Captive Dependency
· .NET Core 对象分配(Alloc)底层原理浅谈
· 聊一聊 C#异步 任务延续的三种底层玩法
· 敏捷开发:如何高效开每日站会
· 为什么 .NET8线程池 容易引发线程饥饿
· 终于决定:把自己家的能源管理系统开源了!
· 外部H5唤起常用小程序链接规则整理
· C#实现 Winform 程序在系统托盘显示图标 & 开机自启动
· WPF 怎么利用behavior优雅的给一个Datagrid添加一个全选的功能
· 了解 ASP.NET Core 中的中间件