凝思linux上keepalived+nginx實作高可用和負載均衡Tcp服務自動主從機切換
- 需求
- 安裝nignx
- 安裝libnl
- 安裝keepalived
- 配置部署nginx
- 配置部署keepalived
需求
通過某一確定ip和埠訪問tcp服務的主從機,某一服務器宕機,需要自動切換為另外一正常的節點,另外需要對主從機負載均衡,由keepalived虛擬出一個ip,通過這個虛擬ip連接到多臺nginx,每臺nginx反向代理到tcp服務各節點來實作負載均衡,

安裝nignx
下載安裝包
解壓 tar zxvf nginx-1.21.1.tar.gz
##代理tcp時,此處必須加上–with-stream引數
./configure --with-stream
make && make install
經過上述操作,nignx安裝完畢,安裝目標在 /usr/local/nginx中
安裝libnl
下載libnl-3.5.0.tar.gz安裝包
解壓 tar zxvf libnl-3.5.0.tar.gz
./configure
make && make install
安裝keepalived
下載keepalived-2.2.1.tar.gz
解壓 keepalived-2.2.1.tar.gz
添加自啟動功能 cp keepalived-2.2.1/keepalived/etc/init.d/keepalived /etc/init.d
ln -s /lib/x86_64-linux-gnu/libnl-genl-3.so.200 /lib/x86_64-linux-gnu/libnl-genl-3.so
./configure --prefix=/usr/local/keepalived
make && make install
mkdir -p /etc/keepalived
cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived
keepalived安裝完畢,安裝目標在/usr/local/keepalived中,
配置部署nginx
分別編輯兩臺服務器上的nginx組態檔,配置代理埠號和負載均衡服務器串列
vi /usr/local/nginx/conf/nginx.conf
#user nobody;
worker_processes 1; #啟動行程,通常設定成和cpu的核數相等
error_log logs/error.log;
# error_log logs/error.log notice;
# error_log logs/error.log info;
pid logs/nginx.pid;
events {
worker_connections 1024;
}
stream {
server {
listen 10000;
proxy_pass app;
proxy_connect_timeout 5;
}
upstream app {
#設定負載均衡的服務器串列
server 192.168.43.131:9999 weight=1;
server 192.168.43.132:9999 weight=1;
}
}
啟動nginx
cd /usr/local/nginx/sbin
chmod +x nginx
./nginx
ps -ef | grep nginx
配置部署keepalived
分別編輯兩臺服務器上的keepalived組態檔,注意check_nginx.sh腳本的存放位置,check_nginx.sh用來判斷nginx行程是否運行,
vi /etc/keepalived/keepalived.conf
master配置
global_defs {
router_id LVS_DEVEL
}
vrrp_script check_gateway {
script "/home/wangchao/check_nginx.sh"
interval 2
weight -5
fall 2
rise 1
}
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 100
advert_int 1
mcast_src_ip 192.168.43.131
authentication {
auth_type PASS
auth_pass 1111
}
track_script {
check_gateway
}
virtual_ipaddress {
192.168.43.200
}
}
backup配置
global_defs {
router_id LVS_DEVEL
}
vrrp_script check_gateway {
script "/home/wangchao/check_nginx.sh"
interval 2
weight -5
fall 2
rise 1
}
vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 51
priority 99
advert_int 1
mcast_src_ip 192.168.43.132
authentication {
auth_type PASS
auth_pass 1111
}
track_script {
check_gateway
}
virtual_ipaddress {
192.168.43.200
}
}
檢驗nginx是否運行的腳本check_nginx.sh
#!/bin/bash
appName='nginx'
appPid=$(ps -ef | grep "${appName}" |grep -v grep| awk '{print $2}'| awk 'NR==1')
if [ ! $appPid ];then
service keepalived stop
fi
兩臺服務器上都啟動Tcp服務
最后啟動keepalived
systemctl start keepalived
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/294671.html
標籤:其他
