ucarp我们来实战一下完成ucarp+nginx做内网vip,模拟F5的vip的方法
ucarp的安装参考之前的文章,环境如下:
- ucarp1:192.168.19.1
- ucarp2:192.168.19.2
- vip:172.18.19.10
在172.18.19.1和172.18.19.2上编译Nginx 1.16.1
./configure --prefix=/export/servers/nginx1161 --with-stream --with-stream_ssl_module
make
make install
重点是/export/servers/nginx1161/conf/nginx.conf
cat /export/servers/nginx1161/conf/nginx.conf
user nobody;
worker_processes auto;
events {
use epoll;
worker_connections 65535;
}
stream {
log_format proxy '$remote_addr [$time_local] '
'$protocol $status $bytes_sent $bytes_received '
'$session_time "$upstream_addr" '
'"$upstream_bytes_sent" "$upstream_bytes_received" "$upstream_connect_time"';
}
access_log logs/tcp-access.log proxy ;
open_log_file_cache off;
upstream stream_backend01 {
hash $remote_addr consistent;
#server 172.18.31.2:80 weight=5;
server 172.18.31.2:80 max_fails=2 fail_timeout=30s;
#server 172.18.31.2:80 max_conns=3;
}
server {
listen 172.18.19.10:80;
proxy_timeout 20s;
proxy_pass stream_backend01;
}
}
注意: 1、打出了tcp-access.log 2、根据源IP做hash,强制分配到后面的同一台服务器上,保证一致性 3、后端的server可以有权重,最大连接,以及失效检测(30s内无法连通2次,就摘掉这个服务器)
同时调整vip-up.sh
cat /usr/local/bin/vip-up.sh
#!/bin/sh
/sbin/ip addr add ${2}/24 dev ${1}
/sbin/ip neigh flush dev ${1}
/export/servers/nginx/sbin/nginx
/export/servers/nginx/sbin/nginx -s reload
谁获得了主ip 172.18.19.10,谁就会启动nginx,并且强制刷一下配置
注意,一开始的时候,由于172.18.19.2没有获得主ip 172.18.19.10,所以上面是不会自动起nginx进程的!!!
测试一下:
在172.18.19.1上面
kill -usr2 ucarp的进程pid
看172.18.19.2上面,nginx已经自动启动了
然后访问
curl http://172.18.19.10/
ok