1. 程式人生 > >keepalived+nginx+tomcat的簡單部署

keepalived+nginx+tomcat的簡單部署

自動運維--keepalived部署

keepalived+nginx

Keepalived是一個基於VRRP協議來實現的服務高可用方案,也是一種高性能的服務器高可用或熱備解決方案,可以利用其來避免IP單點故障,類似的工具還有heartbeatcorosyncpacemaker。但是它一般不會單獨出現,而是與其它負載均衡技術(如lvshaproxynginx)一起工作來達到集群的高可用。為了更好的實現頁面的調用,通過部署Keepalived+nginx來實現負載均衡,使得nginx高可靠性運行。基於Keepalived設計的服務模式能夠真正做到主服務器和備份服務器故障時IP

瞬間無縫交接,實現Web服務器負載均衡。

技術分享

架構規劃:

tomcat服務器:172.25.0.31172.25.0.32

負載均衡服務器nginx、調度器:172.25.0.41172.25.0.42

虛擬服務器(VIP):172.25.0.251

一、服務的安裝:

兩臺負載均衡服務器服務分別安裝nginx

安裝nginx

1安裝軟件依賴包:

yum -y groupinstall "Development Tools""Server Platform Deveopment"

yum -y install gcc pcre-devel zlib-devel openssl-devel

2在所有的主機上面都操作,在兩臺nginx上執行以下操作;下載nginx包:

cd /usr/local/src/

[[email protected] src]# yum install wget y ##安裝wget工具

3下載nginx包:

[[email protected] nginx src]# wget http://nginx.org/download/nginx-1.12.0.tar.gz

4、添加nginx運行的用戶:

[[email protected] nginx sbin]# useradd nginx

5解壓nginx包,並且安裝:

[[email protected] src]# tar zxvf nginx-1.12.0.tar.gz

[[email protected] src]# cd nginx-1.12.0/

6、安裝nginx包:

[[email protected] nginx-1.12.0]# ./configure --prefix=/usr/local/nginx--user=nginx --group=nginx --with-http_ssl_module --with-http_flv_module--with-http_stub_status_module --with-http_gzip_static_module --with-pcre

###編譯安裝

[[email protected] nginx-1.12.0]# make && make install

7、然後我們可以啟動nginx

[[email protected] nginx]# cd /usr/local/nginx/sbin/

[[email protected] sbin]# ./nginx

8、查看一下是否監聽到端口:

[[email protected] sbin]# netstat -ntlp

Active Internet connections (only servers)

Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name

tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 8035/nginx:master

兩臺tomcat服務器都安裝tomcat

1、[[email protected] src]# cd /usr/local/src

Wget http://download.oracle.com/otn-pub/java/jdk/8u144-b01/090f390dda5b47b9b721c7dfaa008135/jdk-8u144-linux-x64.tar.gz?AuthParam=1503469020_c118f54d6bc26126e3ac84591f244ed5

[[email protected] src]# tar -xf jdk-8u111-linux-x64.gz

[[email protected] tomcat src]# ln -s /usr/local/src/jdk1.8.0_111/usr/local/jdk



2、設置環境變量JAVA_HOME,添加以下三項:

[[email protected] tomcat src]#cat /etc/procfile

export JAVA_HOME=/usr/local/jdk

export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH

export CLASSPATH=.$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar

3、測試看是否安裝成功:

[[email protected] centos src]# java -version

java version "1.8.0_111"

Java(TM) SE Runtime Environment (build 1.8.0_111-b14)

Java HotSpot(TM) 64-Bit Server VM (build 25.111-b14, mixedmode)



4、[[email protected] src]#Wget http://mirror.bit.edu.cn/apache/tomcat/tomcat-8/v8.5.20/bin/apache-tomcat-8.5.20.tar.gz

5、安裝tomcat:

[[email protected] src]# tar zxvf apache-tomcat-8.5.20.tar.gz

[[email protected] src]# ln -s /usr/local/src/apache-tomcat-8.5.20/usr/local/tomcat

[[email protected] src]# chown -R root.root /usr/local/tomcat/

設置環境變量:

[[email protected] src]# tail -1 /etc/profile

export TOMCAT_HOME=/usr/local/tomcat/

[[email protected] tomcat ~]# vim /usr/local/tomcat/conf/server.xml

<Hostname="localhost" appBase="webapps"

unpackWARs="true"autoDeploy="true">

添加

<Context path="" docBase=""debug="0" reloadable="false"crossContext="true"/>

把監聽端口改為80

<Connector port="80"protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />

[[email protected] tomcat ~]# cd /usr/local/tomcat/bin/

[[email protected] tomcat bin]# ./catalina.sh start

配置Keepalived服務

nginx主機上配置該服務

[[email protected] src]#wget http://www.keepalived.org/software/keepalived-1.2.7.tar.gz

[[email protected] src]#tar zxvf keepalived-1.2.7.tar.gz -C /usr/local

[[email protected] src]#cd ../keepalived-1.2.7

[[email protected] keepalived-1.2.7]#./configure

[[email protected] keepalived-1.2.7]# make && make install

[[email protected] keepalived-1.2.7]#cp/usr/local/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/

[[email protected] keepalived-1.2.7]#cp/usr/local/etc/sysconfig/keepalived /etc/sysconfig/

[[email protected] keepalived-1.2.7]#mkdir /etc/keepalived

[[email protected] keepalived-1.2.7]cp/usr/local/etc/keepalived/keepalived.conf /etc/keepalived/

[[email protected] keepalived-1.2.7]#cp/usr/local/sbin/keepalived /usr/sbin/

加入啟動服務

[[email protected] keepalived-1.2.7]#echo"/usr/local/nginx/sbin/nginx" >> /etc/rc.local

[[email protected] keepalived-1.2.7]#echo"/etc/init.d/keepalived start" >> /etc/rc.local


二、服務的配置:

2.1配置兩臺的nginx反向代理

[[email protected] keepalived-1.2.7]#vim /usr/local/nginx/conf/nginx.conf

upstream web_up{

server 172.25.0.31 max_fails=3 fail_timeout=20s weight=2;

server 172.25.0.32 max_fails=3 fail_timeout=20s weight=2;

}

server {

listen 80;

server_name 127.0.0.1;

location / {

proxy_pass http://web_up;

proxy_set_header Host $host;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwared-For $proxy_add_x_forwarded_for;

}

2.2 配置keepalived

按照上面的安裝方法,keepalived的配置文件在/etc/keepalived/keepalived.conf。主、從服務器的配置相關聯但有所不同。如下:

Master:

[[email protected] keepalived-1.2.7]# cd /etc/keepalived/

[[email protected] keepalived-1.2.7]#vim keepalived.conf

! Configuration File for keepalived

global_defs {

notification_email {

notification_email {

#[email protected]

#[email protected]

#[email protected]

}

#notification_email_from [email protected]

#smtp_serversmtp.hysec.com

#smtp_connect_timeout 30

router_id LVS_DEVEL

}

vrrp_instance VI_1 {

state MASTER

interface eth1

virtual_router_id51

priority 100

advert_int 1

authentication {

auth_type PASS

auth_pass 1111

}

virtual_ipaddress {

172.25.0.251

}

}

2.3另一臺nginx配置keepalived的狀態為backup

Backup:

[[email protected] keepalived-1.2.7]# cd /etc/keepalived/

[[email protected] nginx keepalived-1.2.7]#vim keepalived.conf

! Configuration File for keepalived

global_defs {

notification_email {

notification_email {

#[email protected]

#[email protected]

#[email protected]

}

#notification_email_from [email protected]

#smtp_serversmtp.hysec.com

#smtp_connect_timeout 30

router_id LVS_DEVEL

}

vrrp_instance VI_1 {

state BACKUP

interface eth1

virtual_router_id51

priority 99

advert_int 1

authentication {

auth_type PASS

auth_pass 1111

}

virtual_ipaddress {

172.25.0.251

}

}

三、測試keepalived獲取的vip情況:

  • 先後在主、從服務器上啟動keepalived:/etc/init.d/keepalived start

  • 在主服務器上查看是否已經綁定了虛擬IP ip addr

  • 停止主服務器上的keepalived:/etc/init.d/keepalived stop 然後在從服務器上查看是否已經綁定了虛擬IP

  • 啟動主服務器上的keepalived,看看主服務器能否重新接管虛擬IP



四、配置nginx的監控腳本

【簡單腳本】

cd /etc/keepalived/

Vim chk_nginx.sh

#!/bin/bash

Pgrep ngnix

port=80

if [ $? –eq 0 ] ; then

echo ”nginx isrunning”

else

/usr/local/nginx/sbin/nginx

fi

[[email protected]keepalived/]#chmod a+x chk_nginx.sh

然後在keepalived.conf添加腳本路徑,在keepalived.conf中增加如下配置:

vrrp_script chk_http_port {

script " /etc/keepalived/chk_nginx.sh"

interval 2

weight 2

}

track_script {

chk_http_port

}

測試結果:當一臺主機的nginx停止時,另一臺nginx將會接管web服務。



寫的不好敬請原諒

本文出自 “我的運維” 博客,謝絕轉載!

keepalived+nginx+tomcat的簡單部署