学习的一些简单操作进行记录,需要配合keepalived对nginx实现单机高可用
学习的网址:https://www.majiaxueyuan.com/uc/play/40
nginx 下载地址:http://nginx.org/en/download.html
keepalived下载地址:https://download.csdn.net/download/qq_28198181/10997081
目录
1.停止nginx
如果nginx正在运行 先将其停掉
kill -QUIT pid
#或者
./nginx -s stop
2.安装keepalived
将压缩包上传
我是上传到usr/local/src目录
然后解压keepalived
tar -zxvf keepalived-1.2.18.tar.gz
解压完毕后
configure make make install
注意路径
先进入 文件夹
cd keepalived-1.2.18/
运行配置
./configure --prefix=/usr/local/keepalived
接着make && make install
make && make install
接着我们进入/usr/local/keepalived查看
3.加载系统服务
将keepalived安装成Linux系统服务,因为没有使用keepalived的默认安装路径(默认路径:/usr/local),安装完成之后,需要做一些修改工作将keepalived安装成Linux系统服务,因为没有使用keepalived的默认安装路径(默认路径:/usr/local),安装完成之后,需要做一些修改工作:
1.创建文件夹
mkdir mkdir /etc/keepalived
2.拷贝配置文件
cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
3.拷贝脚本文件
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/ #报错文件已经存在 ,可以不管
截图:
可以通过命令启动测试一下安装成功没
service keepalived start
service keepalived stop
注意:
如果启动失败的情况下处理方法
cd /usr/sbin/
rm -rf keepalived
cp /usr/local/keepalived/sbin/keepalived /usr/sbin/
然后启动测试
4.配置keepalived
keepalived 安装好后 需要修改配置文件 让其去自动检测ngxinx 的状态,当ngixn 断开后 能够自动重启
这里需要两个文件 keepalived.conf 和 一个脚本文件nginx_check.sh
以下是keepalived.conf的文件内容:
lobal_defs {
router_id bhz005 ##标识节点的字符串,通常为hostname
}
vrrp_script chk_nginx {
script "/etc/keepalived/nginx_check.sh" #运行脚本,脚本内容下面有,就是起到一个nginx宕机以后,自动开启服务
interval 2 #检测时间间隔
weight -20 #如果条件成立的话,则权重 -20
}
# 定义虚拟路由,VI_1 为虚拟路由的标示符,自己定义名称
vrrp_instance VI_1 {
state MASTER #来决定主从BACKUP
interface ens33 # 绑定虚拟 IP 的网络接口,根据自己的机器填写
virtual_router_id 1229 # 虚拟路由的 ID 号,节点设置必须一样
mcast_src_ip 192.168.174.141 #填写本机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.174.141# 虚拟ip,这里配置自己的IP地址
}
}
需要注意的是有以下几个点:
1.script "/etc/keepalived/nginx_check.sh" #运行脚本,脚本内容下面有,就是起到一个nginx宕机以后,自动开启服务
这个是脚本的路径一定要一致
2. interface eno16777736 # 绑定虚拟 IP 的网络接口,根据自己的机器填写
这个是需要根据自己的服务器配置的网络接口来看的,具体方法如下:
进入上面显示的目录地址:
cd /etc/sysconfig/network-scripts/
然后查看
ls
显示的ifcfg-ens33 侯曼的ens33就是网络接口
这里可以填写
interface ens33 # 绑定虚拟 IP 的网络接口,根据自己的机器填写
3.cast_src_ip 192.168.174.141 #填写本机ip
这里填写本机的ip地址
virtual_ipaddress {
192.168.174.141# 虚拟ip,这里配置自己的IP地址
}
这里一致。
keepalived.conf文件以上
脚本文件nginx_check.sh
#!/bin/bash
A=`ps -C nginx –no-header |wc -l` # 查看nginx的pid 赋值给A
if [ $A -eq 0 ];then # 如果A为0 说明没有运行
/usr/local/nginx/sbin/nginx # 启动nginx
sleep 2 # 休眠两秒
if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then # 如果还是未运行
killall keepalived # 杀死所有的keepalived
fi
fi
将修改好的两个文件放置到/etc/keepalived下
5.启动keepalived
service keepalived start
当前nginx我们之前关了 现在再看看
已经启动了
6.测试查看
我们在网页上访问下nginx(我关闭了防火墙的哦)
说明是正常访问的,现在我将nginx手动停掉
然后再访问也能访问
看下后台
nginx的pid进行了变化
说明是重新启动了的
以上是nginx+keepalived 单机高可用