tomcat+Nginx+keepalived安裝手冊

一、軟件準備
jdk-8u11-linux-x64.tar.gz
apache-tomcat-7.0.96.tar
nginx-1.16.1.tar.gz
keepalived-2.0.2.tar.gz
主:192.168.162.128
從:192.168.162.129
虛擬:192.168.162.222
CentOS 7.X
二、jdk安裝
1、在/usr下建立/java目錄,將軟件拷貝過去解壓

       tar -zxvf jdk-8u11-linux-x64.tar.gz 

2、配置環境變量
在 /etc/profile中加入如下內容:

		JAVA_HOME=/usr/java/jdk1.8.0_11
		CLASSPATH=$JAVA_HOME/lib:$JAVA_HOME/jre/lib
		PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin
		export PATH CLASSPATH JAVA_HOME
	然後  source /etc/profile   #使配置文件立即生效

3、測試jdk是否安裝成功
在這裏插入圖片描述
二、tomcat安裝
1、先將軟件上傳到/usr/local下面,並進行解壓

   		tar -zxvf apache-tomcat-7.0.96.tar.gz 
 		mv apache-tomcat-7.0.96 tomcat   #重命名

在這裏插入圖片描述
2、啓動tomcat
進入tomcat的/bin目錄下 ,找到startup.sh 腳本,並執行

    	 sh startup.sh

在這裏插入圖片描述
3、測試

		ps aux | grep tomcat

此時tomcat已經啓動,端口爲8080,但是依舊出現了無法訪問的問題
解決方法:
猜測是防火牆的原因,這裏比較暴力直接關閉防火牆,也可以開放端口重啓防火牆

		firewall-cmd --state  #檢測防火牆狀態
		systemctl stop firewalld.service   #關閉防火牆

訪問192.168.162.128:8080
在這裏插入圖片描述
4、搭建兩個tomcat
在/usr/local下面再複製一個tomcat,命名爲tomcat1

		cp -a tomcat/ /usr/local/tomcat1

修改這個訪問端口爲8081,同時修改連接端口和AJP端口分別爲9005和9009

		vim /usr/local/tomcat1/conf/server.xml

在這裏插入圖片描述
在bin目錄下啓動這個tomcat

		sh startup.sh

5、分別修改兩個tomcat的/usr/local/tomcat/webapps/ROOT/index.jsp頁面以示區別

		cp index.jsp /usr/local/tomcat/webapps/ROOT/indexex.jsp  #備份保留原jsp,然後修改index.jsp的內容

四、Nginx安裝
1、環境準備
Gcc:yum install gcc c++
Pcre:yum install -y pcre pcre-devel
Zlib:yum install -y zlib zlib-devel
OpenSSL:yum install -y openssl openssl-devel
2、解壓

 		tar -zxvf  nginx-1.16.1.tar.gz 

3、編譯安裝

		mv nginx-1.16.1 nginx  #改名
		cd  nginx    #進入目錄
		./configure   #當前使用默認配置
		make  #編譯
		make install   #安裝

問題:
cp: ‘conf/koi-win’ and ‘/usr/local/nginx/conf/koi-win’ are the same file
make[1]: *** [install] Error 1
解決辦法 :
因爲直接將tar解壓到 /usr/local 下面,並重命名爲nginx ,路徑問題,重新指定配置

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

4、啓動nginx

		/usr/local/nginx/sbin/nginx  #啓動
		 ps aux | grep nginx  #在進程中檢測

出現:
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)爲80端口被佔用,經lsof -i:80 發現佔用80端口的正是nginx 是因爲自己多次啓動
/usr/local/nginx/sbin/nginx -s stop #停止nginx
5、測試
訪問192.168.162.128,會看到welcome to nginx的歡迎頁面
6、編輯/nginx.conf文件進行配置高

		vim /usr/local/nginx/conf/nginx.conf

在http{}之間添加upstream配置

     upstream mytomcat {
	    ip_hash;#使用ip_hash,同一IP訪問同一服務器session保持
	    server 127.0.0.1:8080;  #分流   可在後面接weight=1  這是權重分配,數值越大分配機率越大。
	    server 127.0.0.1:8081;
       }

在這裏插入圖片描述
###ip_hash: 通過客戶端請求ip進行hash,再通過hash值選擇後端server, ,每個ip在一定時間內會訪問固定的後端服務器,既能滿足每個用戶請求到同一臺服務器,又能滿足不同用戶之間負載均衡。但是並不能完全保證負載均衡。
用proxy_pass配置反向代理地址

    location / {
        root   html;
        index  index.html index.htm;
        proxy_set_header Host $host:$server_port;  #設置請求頭
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Real-PORT $remote_port;
 	    proxy_set_header X-Forwarded-For$proxy_add_x_forwarded_for;
        proxy_pass http://mytomcat; #配置方向代理地址
    }

驗證配置文件

		/usr/local/nginx/sbin/nginx -t

重新啓動nginx

注:以上在兩臺均安裝

7、測試負載均衡
**問題:**nginx每次訪問都是歡迎頁面,並沒有跳轉到指定的服務器
**解決:**指定配置文件啓動

 /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

解決問題後,訪問192.168.162.128能夠用正常的訪問到tomcat服務器。並且可以看到,同一IP在一段時間內訪問到的服務器不變,固定爲相同的一個,但是不同的IP能夠負載均衡

五、keepalive安裝
1、環境準備
yum install -y gcc openssl-devel popt-devel
yum -y install libnl libnl-devel
yum install -y libnfnetlink-devel
2、解壓

		cd /usr/local
	    tar -zxvf keepalived-2.0.2.tar.gz
        mv  keepalived-2.0.2 keepalived

3、編譯安裝

		./configure 
		make
		make  install

4、將keepalived添加到系統服務中

	cp /usr/local/sbin/keepalived /usr/sbin/  #    拷貝執行文件
	cp /usr/local/keepalived/keepalived/etc/init.d/keepalived  /etc/init.d/keepalived    # 添加到開機啓動項
    cp  /usr/local/keepalived/keepalived/etc/sysconfig/keepalived  /etc/sysconfig  #  將keepalived文件拷貝到etc下
    mkdir /etc/keepalived  #    創建keepalived文件夾
    cp  /usr/local/keepalived/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf  #    拷貝配置文件,系統讀取的位置

5、配置/etc/keepalived/keepalived.conf配置文件

配置MASTER,對應的爲BACKUP
	將vrrp_instance VI_1 {}中綁定的網卡改爲本機網卡
   			 interface eno16777736    #eno16777736爲本機網卡
    virtual_router_id 51   #同一個keepalived 節點必須設置成一樣
    priority 100   #節點優先級,BACKUP的優先級一定要比MASTER的優先級低
    advert_int 1 #組播信息發送間隔,兩個節點設置必須一樣
    mcast_src_ip=192.168.162.128   #實際的eno16777736上的固定ip地址 
    authentication { auth_type PASS auth_pass 1111 }#驗證信息,只有驗證信息相同,才能被加入到一個組中。 

在這裏插入圖片描述
用相同的方法配置BACKUP
在這裏插入圖片描述
6、啓動keepalived

 		systemctl start keepalived

在這裏插入圖片描述
在這裏插入圖片描述
注:哪臺機器的ip addr顯示有VIP連接,則表明哪臺目前啓動的是哪臺的服務
7、測試
** 能夠PING通,但是無法通過虛擬ip訪問**
1、網上大部分方案都說因是keepalived.conf配置中默認vrrp_strict打開了,需要把它註釋掉,確實在自己的配置文件中有這個配置,於是將其註釋。同時將router_id改爲自己的IP。
2、本來設置的虛擬IP爲192.168.200.16 更改自己的虛擬IP至同網段,我這裏改成192.168.162.222

然後VIP 192.168.162.222能夠正常訪問

8、編寫nginx狀態檢測腳本

vim /etc/keepalived/nginx_check.sh

#!/bin/bash
A=`ps -C nginx –no-header |wc -l`
if [ $A -eq 0 ];then
        /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
sleep 2
if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
systemctl stop keepalived
fi
fi

#該腳本意義爲如果沒有nginx這個進程存在,則嘗試啓動nginx,若無法啓動, 將關閉本機的keepalived,然後虛擬 ip 綁定到 BACKUP 機器上。

保存後,給腳本賦執行權限

chmod a+x /etc/keepalived/nginx_check.sh

在keepalived.conf中配置

vrrp_script chk_nginx {
	 script "/etc/keepalived/nginx_check.sh"
	 interval 2  
	 weight -20
}

在這裏插入圖片描述
同時在vrrp_instance VI_1 {}加入

  track_script {
 		chk_nginx  
  }

六、綜合測試
1、同時啓動192.168.162.128和192.168.162.129上的tomcat、nginx和keepalivd,通過VIP192.168.162.222訪問,此時訪問到的是192.168.162.128,因爲它默認爲master.並且此時使用不同的IP訪問VIP192.168.162.222能實現負載均衡,但如果是相同的IP,訪問的還是原來訪問的那個服務器。在這裏插入圖片描述
2、關閉192.168.162.128上面的nginx和keepalived,通過VIP192.168.162.222訪問,此時訪問到的是192.168.162.129。並且此時使用不同的IP訪問VIP192.168.162.222能實現負載均衡,但如果是相同的IP,訪問的還是原來訪問的那個服務器。
在這裏插入圖片描述
3、關閉192.168.162.129上面的nginx和keepalived,通過VIP192.168.162.222訪問,此時訪問到的是192.168.162.128。並且此時使用不同的IP訪問VIP192.168.162.222能實現負載均衡,但如果是相同的IP,訪問的還是原來訪問的那個服務器。
在這裏插入圖片描述
(注:部分資料來源於網絡,如有侵權,請聯繫作者)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章