环境Centos7 64x
下载需要的nginx、keeplived包
安装Nginx
安装所需插件
yum install -y gcc gcc-c++
yum install -y pcre pcre-devel
yum install -y zlib zlib-devel
yum -y install openssl openssl-devel
解压
cd /usr/local
tar -zxvf nginx-1.16.1.tar.gz
编译
cd nginx-1.16.1
./configure --user=nobody --group=nobody --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_gzip_static_module --with-http_realip_module --with-http_sub_module --with-http_ssl_module
make && make install
配置nginx测试域名
cd /usr/local/nginx/conf
vim nginx.conf
# 其他的使用默认配置
listen 80;
server_name www.yxd.com;
修改nginx首页用于判断主从是否生效
cd /usr/local/nginx/html
vim index.html
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
body {
width: 35em;
margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif;
}
</style>
</head>
<body>
<h1>Welcome to nginx master!</h1> #从节点master修改为slave
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>
<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>
<p><em>Thank you for using nginx.</em></p>
</body>
</html>
启动Nginx测试是否正常
./usr/local/nginx/sbin/nginx
主Nginx
安装keepalived
解压
cd /usr/local
tar -zxvf nginx-1.16.1.tar.gz
编译安装
./configure --prefix=/usr/local/keepalived
make && make install
cp /usr/local/keepalived-1.4.2/keepalived/etc/init.d/keepalived /etc/init.d/
mkdir /etc/keepalived
cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
cp /usr/local/keepalived-1.4.2/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
cp /usr/local/keepalived/sbin/keepalived /usr/sbin/
修改Keepalived.con
vim /etc/keepalived/keepalived.conf
global_defs {
notification_email {
jyxd1997@163.com
}
notification_email_from sns-lvs@gmail.com
smtp_server smtp.hysec.com
smtp_connect_timeout 30
router_id nginx_slave
script_user root
enable_script_security
}
vrrp_script chk_nginx {
script "/usr/local/src/check_nginx_pid.sh" # nginx启动脚本
interval 2 # 心跳间隔
weight -5
}
vrrp_instance VI_1 {
state MASTER # 从节点修改为BACKUP
interface eth0 # 通过ip a查看网卡名称,选择与内网网段匹配的网卡
virtual_router_id 51
priority 100 # 权重 主节点需要大于从节点
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
track_script {
chk_nginx
}
virtual_ipaddress {
192.168.1.200 # 虚拟ip,最终提供给外部访问的
}
}
编写Nginx启动脚本
vim /usr/local/src/check_nginx_pid.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
chmod 777 /usr/local/src/check_nginx_pid.sh
启动Keepalived
service keepalived start
systemctl enable keepalived
查看日志
journalctl -xe
tail -f /var/log/messages
效果
修改HOST文件