0%

Nginx+Keepalive负载均衡

环境

主机 IP
MASTER 192.168.1.90
BACKUP 192.168.1.91

Nginx安装

下载
1
2
3
wget http://nginx.org/download/nginx-1.16.0.tar.gz
也可以使用Tengine
wget http://tengine.taobao.org/download/tengine-2.3.0.tar.gz
安装依赖
1
yum -y install pcre-devel openssl-devel gcc
安装
1
2
3
4
5
6
7
8
9
10
11
12
13
14
tar zxf nginx-1.16.0.tar.gz

cd nginx-1.16.0
./configure \
--prefix=/usr/local/nginx \
--with-http_gzip_static_module \
--with-http_flv_module \
--with-http_stub_status_module \
--with-http_v2_module \
--with-http_ssl_module \
--with-file-aio \
--with-http_realip_module

make && make install

创建Nginx用户

1
useradd -s /sbin/nologin www

修改Nginx目录权限

1
chown -R www:www /usr/local/nginx

安装Keepalive

下载
1
wget https://www.keepalived.org/software/keepalived-2.0.16.tar.gz
1
2
3
4
5
6
7
8
tar zxf keepalived-2.0.16.tar.gz

cd keepalived-2.0.16
./configure \
--prefix=/usr/local/keepalived

make
make install
添加到systemctl和chkconfig进行管理
1
vi /lib/systemd/system/keepalived.service
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[Unit]
Description=Keepalived
After=syslog.target network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
PIDFile=/var/run/keepalived.pid
ExecStart=/usr/local/keepalived/sbin/keepalived -D
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true

[Install]
WantedBy=multi-user.target

ExecStart=/usr/local/keepalived/sbin/keepalived -D #keepalived的启动文件 -D是输出详细日志
PIDFile=/var/run/keepalived.pid #keepalived默认存放pid的位置
配置Keepalive

两个节点配置文件不一样的地方只有state、priority和router_id,其他完全保持一致。

节点1配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
! Configuration File for keepalived

global_defs {
router_id NGINX_DEVEL
}

vrrp_script chk_nginx {
script "/usr/local/keepalived/check_nginx.sh"
interval 1
weight -20
}

vrrp_instance VI_1 {
state MASTER #这里只能接受MASTER和BACKUP,而且必须为大写
interface eth0 #绑定虚拟IP的网卡接口
virtual_router_id 51 #虚拟ID,同一个ID之间互相通讯,两个节点之间必须保持一致
priority 100 #优先级(0-254),一般设置100左右,主节点要比从节点高
advert_int 1 #发VRRP包的时间间隔,即多久进行一次master选举(可以认为是健康查检时间间隔)
authentication {
auth_type PASS #设置验证方式,这里采用的是明文密码认证,两个节点必须保持一致
auth_pass 1234
}
virtual_ipaddress {
192.168.1.100 #虚拟IP,可以设置多个
}

track_script {
chk_nginx #nginx存活状态检测脚本
}
}

节点2配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
! Configuration File for keepalived

global_defs {
router_id NGINX_DEVEL
}

vrrp_script chk_nginx {
script "/usr/local/keepalived/check_nginx.sh"
interval 1
weight -20
}

vrrp_instance VI_1 {
state BACKUP #这里只能接受MASTER和BACKUP,而且必须为大写
interface eth0 #绑定虚拟IP的网卡接口
virtual_router_id 51 #虚拟ID,同一个ID之间互相通讯,两个节点之间必须保持一致
priority 90 #优先级(0-254),一般设置100左右,主节点要比从节点高
advert_int 1 #发VRRP包的时间间隔,即多久进行一次master选举(可以认为是健康查检时间间隔)。
authentication {
auth_type PASS #设置验证方式,这里采用的是明文密码认证,两个节点必须保持一致
auth_pass 1234
}
virtual_ipaddress {
192.168.1.100 #虚拟IP,可以设置多个
}
track_script {
chk_nginx #nginx存活状态检测脚本
}
}

分别启动Keepalived

1
2
systemctl start keepalived.service	#启动
systemctl stop keepalived.service #停止
-------------    本文结束  感谢您的阅读    -------------