當前位置:
首頁 > 知識 > Keepalived+Nginx高可用安裝部署(含Nginx+Tomcat負載均衡)

Keepalived+Nginx高可用安裝部署(含Nginx+Tomcat負載均衡)

Keepalived+Nginx高可用安裝部署(含Nginx+Tomcat負載均衡)

Keepalived

Keepalived+Nginx高可用安裝部署(含Nginx+Tomcat負載均衡)

Nginx

Keepalived+Nginx高可用安裝部署(含Nginx+Tomcat負載均衡)

Tomcat


1、規劃

虛IP:192.168.56.101

真實IP |主機名 |Nginx埠|Tomcat埠|主從



192.168.56.103|leo.dis2| 88 | 8080 |主

192.168.56.104|leo.dis3| 88 | 8080 |從



CentOS6.8

Nginx 1.13.1

Keepalived 1.3.5

Tomcat7.0.78

JDK1.8.0_131

參看我以前的文章,打開防火牆埠。


2、安裝Nginx

使用root用戶,安裝依賴包:


yum install gcc gcc-c++ make automake autoconf libtool pcre pcre-devel zlib zlib-devel openssl openssl-devel

把Nginx包放到/usr/local/src內,解壓縮並安裝:


tar -zxvf nginx-1.13.1.tar.gz

cd nginx-1.13.1

./configure --prefix=/usr/local/nginx

make && make install

3、配置Nginx

vi /usr/local/nginx/conf/nginx.conf

在開頭增加:

user root;

監聽埠80改為88

vi /usr/local/nginx/html/index.html

分別給兩台伺服器的Nginx頁面增加103/104的標識。



啟動Nginx

/usr/local/nginx/sbin/nginx

# 重新載入配置文件

/usr/local/nginx/sbin/nginx -s reload

# 重啟 Nginx

/usr/local/nginx/sbin/nginx -s reopen

# 停止 Nginx

/usr/local/nginx/sbin/nginx -s stop


4、Nginx開機啟動

vi /etc/rc.local

添加 /usr/local/nginx/sbin/nginx


5、Keepalived安裝

安裝依賴包:


yum install openssl-devel libnl3-devel ipset-devel iptables-devel libnfnetlink-devel popt popt-static popt-devel gcc kernel-headers kernel-devel net-snmp-devel -y

把Keepalived包放到/usr/local/src內,解壓縮並安裝:


tar -zxvf keepalived-1.3.5.tar.gz

cd keepalived-1.3.5

./configure --prefix=/usr/local/nginx

make && make install

6、設置為開機啟動

接下來是跟很多教程不一樣的地方。

在很多教程里,安裝完畢後下一步應該是複製、鏈接一些文件,以便把keepalived設置成系統服務,但是請注意/usr/local/keepalived/etc/rc.d/init.d/keepalived這個文件,教程上都說有這個文件,複製到/etc/init.d/即可,可是在我安裝過程中,沒有這個目錄和文件,所以要按照以下的方法來處理:


mkdir -p /etc/keepalived

cd /usr/local/keepalived/

ln -s /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/

ln -s /usr/local/keepalived/sbin/keepalived /usr/sbin/

ln -s /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/

touch /etc/rc.d/init.d/keepalived

chmod +x /etc/rc.d/init.d/keepalived

vi /etc/rc.d/init.d/keepalived

keepalived腳本內容:


#!/bin/sh

#

# keepalived High Availability monitor built upon LVS and VRRP

#

# chkconfig: - 86 14

# description: Robust keepalive facility to the Linux Virtual Server project

# with multilayer TCP/IP stack checks.

### BEGIN INIT INFO

# Provides: keepalived

# Required-Start: $local_fs $network $named $syslog

# Required-Stop: $local_fs $network $named $syslog

# Should-Start: smtpdaemon httpd

# Should-Stop: smtpdaemon httpd

# Default-Start:

# Default-Stop: 0 1 2 3 4 5 6

# Short-Description: High Availability monitor built upon LVS and VRRP

# Description: Robust keepalive facility to the Linux Virtual Server

# project with multilayer TCP/IP stack checks.

### END INIT INFO

# Source function library.

. /etc/rc.d/init.d/functions

exec="/usr/sbin/keepalived"

prog="keepalived"

config="/etc/keepalived/keepalived.conf"

[ -e /etc/sysconfig/$prog ] && . /etc/sysconfig/$prog

lockfile=/var/lock/subsys/keepalived

start() {

[ -x $exec ] || exit 5

[ -e $config ] || exit 6

echo -n $"Starting $prog: "

daemon $exec $KEEPALIVED_OPTIONS

retval=$?

echo

[ $retval -eq 0 ] && touch $lockfile

return $retval

}

stop() {

echo -n $"Stopping $prog: "

killproc $prog

retval=$?

echo

[ $retval -eq 0 ] && rm -f $lockfile

return $retval

}

restart() {

stop

start

}

reload() {

echo -n $"Reloading $prog: "

killproc $prog -1

retval=$?

echo

return $retval

}

force_reload() {

restart

}

rh_status() {

status $prog

}

rh_status_q() {

rh_status &>/dev/null

}

case "$1" in

start)

rh_status_q && exit 0

$1

;;

stop)

rh_status_q || exit 0

$1

;;

restart)

$1

;;

reload)

rh_status_q || exit 7

$1

;;

force-reload)

force_reload

;;

status)

rh_status

;;

condrestart|try-restart)

rh_status_q || exit 0

restart

;;

*)

echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload}"

exit 2

esac

exit $?

注意腳本裡面的目錄,要跟上面cp、ln的目錄一致。

設置服務開機啟動:


chkconfig --add keepalived

chkconfig --level 35 keepalived on

7、設置Keepalived

主節點(192.168.56.103):

vi /etc/keepalived/keepalived.conf


! Configuration File for keepalived

global_defs {

router_id leo.dis2 #主機名

}

vrrp_script chk_nginx {

script "/etc/keepalived/nginx_check.sh"

interval 2

weight -20

}

vrrp_instance VI_1 {

state MASTER#主節點 建議設置為BACKUP,具體解釋見後

interface eth1#指定監測的網卡

virtual_router_id 101#虛擬路由ID,節點保持一致

mcast_src_ip 192.168.56.103 #本機IP

priority 100#權重

nopreempt#設置為不搶佔資源

advert_int 1

authentication {

auth_type PASS

auth_pass 1357924680

}

track_script {

chk_nginx

}

virtual_ipaddress {

192.168.56.101#虛擬IP

}

}

從節點(192.168.56.104):

vi /etc/keepalived/keepalived.conf


! Configuration File for keepalived

global_defs {

router_id leo.dis3

}

vrrp_script chk_nginx {

script "/etc/keepalived/nginx_check.sh"

interval 2

weight -20

}

vrrp_instance VI_1 {

state BACKUP

interface eth1

virtual_router_id 101

mcast_src_ip 192.168.56.104

priority 90

nopreempt

advert_int 1

authentication {

auth_type PASS

auth_pass 1357924680

}

track_script {

chk_nginx

}

virtual_ipaddress {

192.168.56.101

}

}

注意:nopreempt這個選項要解釋解釋。

這個設置項,允許一個priority比較低的節點作為master,即使有priority更高的節點啟動。

通常如果master服務死掉後backup會變成master,但是當master服務又好了的時候 master此時會搶佔VIP,這樣就會發生兩次切換對業務繁忙的網站來說是不好的。

所以我們要在配置文件加入 nopreempt 非搶佔,但是這個參數只能用於state 為backup,故我們在用的時候最好master 和backup的state都設置成backup 讓其通過priority來競爭。

但是我在測試的時候,不管怎麼配置, VIP資源總是會被搶佔,後來查資料說要在防火牆上開啟組播:


vi /etc/sysconfig/iptables

#組播

-A INPUT -d 224.0.0.18 -j ACCEPT

重啟防火牆。

監測Nginx腳本:


#!/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 +x /etc/keepalived/nginx_check.sh

啟動Keepalived:


service keepalived start

8、驗證

啟動Nginx、Keepalived。

分別訪問:http://192.168.56.103:88/ http://192.168.56.104:88/ 會看到之前做的標識。

訪問http://192.168.56.101:88/ 會看到103的標識。

關閉103的KA,刷新頁面則會看到104的標識。


9、Nginx+Tomcat負載均衡

Nginx+Tomcat負載均衡的教程特別多,不再多介紹,簡單提幾個點。

1)兩個nginx.conf修改以下幾處:


#增加

upstream tomcat.com{

#Tomcat1

192.168.56.103:8080 weight=1;

#Tomcat2

192.168.56.104:8080 weight=1;

}

#修改

location / {

#root html;

#index index.html index.htm;

proxy_pass http://tomcat.com;

proxy_redirect default;

}

2)JDK要安裝,防火牆要打開埠。

3)修改兩個Tomcat/webapps/ROOT/index.jsp,分別做上標識。

訪問http://192.168.56.101:88,即可看到不同標識的Tomcat主頁。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 Java個人學習心得 的精彩文章:

Java操作Linux命令分割合并文本文件及其他
Dubbo管理控制台安裝

TAG:Java個人學習心得 |

您可能感興趣

Ansible自動部署nginx+keepalived高可用負載均衡
使用Centos7.5+Nginx+Gunicorn+Django+Python3部署blog項目
如何使用Rancher 2.0在Kubernetes集群上部署Istio
Nginx+uwsgi部署Django應用
Django(Ngnix)項目部署 負載均衡
Chrome部署Material Design:似Firefox早期版本
在 Kubernetes 上部署 Spinnaker
Chrome部署Material Design:標籤欄類似於Firefox早期版本
索尼為Xperia XA1/Plus和Ultra部署Android Oreo推送
Semtech與Comcast旗下的machineQ宣布已在美國的10座城市部署LoRaWAN網路
在Azure Stack上部署Kubernetes
如何使用 TensorFlow mobile將PyTorch和Keras 部署到移動設備
Inception部署
Oracle開源GraphPipe:幾行代碼讓你在TensorFlow部署PyTorch模型
BM推出了AIOpenScale和Multi-cloud Manager,以簡化AI和雲部署
Linux部署Nginx+Mysql+PHP+PHPMyAdmin4環境
Symantec NetBackup 部署需要調整Linux內核詳解
Aruba OnConnect 方案部署
NET Core從Github到 Nuget 持續集成、部署
華為CloudCampus助力義大利Fastweb部署城市Wi-Fi熱點