keepalived+nginx+tomcat高可用

keepalived是什么

keepalived是集群管理中保证集群高可用的一个服务软件,其功能类似于heartbeat,用来防止单点故障。

keepalived工作原理

keepalived是以VRRP协议为实现基础的,VRRP全称Virtual Router Redundancy Protocol,即虚拟路由冗余协议。
虚拟路由冗余协议,可以认为是实现路由器高可用的协议,即将N台提供相同功能的路由器组成一个路由器组,这个组里面有一个master和多个backup,master上面有一个对外提供服务的vip(该路由器所在局域网内其他机器的默认路由为该vip),master会发组播,当backup收不到vrrp包时就认为master宕掉了,这时就需要根据VRRP的优先级来选举一个backup当master。这样的话就可以保证路由器的高可用了。

keepalived主要有三个模块,分别是core、check和vrrp。core模块为keepalived的核心,负责主进程的启动、维护以及全局配置文件的加载和解析。check负责健康检查,包括常见的各种检查方式。vrrp模块是来实现VRRP协议的。


部署示意图


按照部署示意图准备四台Server:

192.168.2.128(keepalived + nginx proxy) Master

192.168.2.130(keepalived + nginx proxy) Backup

192.168.2.131(RS1 Tomcat1)

192.168.2.132(RS2 Tomcat2)

虚拟IP (VIP):192.168.2.150

首先关闭Linux的防火墙和seLinux

如果忘记关闭的话,在不是keepalived的时候会出现裂脑问题

此处先关闭,后期生产环境再解决这个问题

setenforce 0

/etc/init.d/iptables stop

chkconfig iptables off #永久关闭防火墙

安装Linux软件

在Linux上推荐使用yum来安装软件,这样可以帮我们解决软件直接的依赖关系,将Linux上的yum源修改到国内这样可以提高yum下载速度

一、修改yum源信息

1. cd /etc/yum.repos.d
2. mv CentOS-Base.repo CentOS-Base.repo.backup
3. wget http://mirrors.163.com/.help/CentOS6-Base-163.repo
4. mv CentOS6-Base-163.repo CentOS-Base.repo 

二、在192.168.2.128 安装keepalived

1.下载keepalived  wget http://www.keepalived.org/software/keepalived-1.2.18.tar.gz

2.解压keepalived tar xf keepalived-1.2.18.tar.gz -C /usr/local/

3.安装依赖 yum -y install gcc gcc+ gcc-c++ popt-devel openssl openssl-devel libssl-dev libnl-devel popt-devel

4.安装内核开发包 yum -y install kernel kernel-devel

4.1创建内核的软连接 ln -sv /usr/src/kernels/2.6.32-642.1.1.el6.x86_64/ /usr/src/linux

5.编译keepalived

5.1 cd/usr/local/keepalived-1.2.18/

5.2 ./configure

5.3 make && make install

5.4 拷贝相应文件

/bin/cp /usr/local/sbin/keepalived /usr/sbin/ 
/bin/cp /usr/local/etc/rc.d/init.d/keepalived /etc/init.d/  
/bin/cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig/  
/bin/cp -r /usr/local/etc/keepalived/ /etc/  

5.5 添加开机自启动

chkconfig --add /etc/init.d/keepalived 
chkconfig --level 35 keepalived on
chkconfig --list keepalived

5.6 手动启动keepalived /etc/init.d/keepalived restart

三、修改92.168.2.128 keepalived的配置文件

1、首先备份配置文件 cp /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.bak

2、vim /etc/keepalived/keepalived.conf

! Configuration File for keepalived
global_defs {
   notification_email {
     
#acassen@firewall.loc
     
#failover@firewall.loc
     
#sysadmin@firewall.loc
   }
   
#notification_email_from Alexandre.Cassen@firewall.loc
   
#smtp_server 192.168.200.1
   
#smtp_connect_timeout 30
   router_id LVS_DEVEL
}


vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.2.150/24
    }
}

四、在192.168.2.130 安装keepalived步骤如第三步

五、修改92.168.2.130 keepalived的配置文件

1、首先备份配置文件 cp /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.bak

2、vim /etc/keepalived/keepalived.conf

! Configuration File for keepalived

global_defs {
   notification_email {
     #acassen@firewall.loc
     #failover@firewall.loc
     #sysadmin@firewall.loc
   }
   #notification_email_from Alexandre.Cassen@firewall.loc
   #smtp_server 192.168.200.1
   #smtp_connect_timeout 30
   router_id LVS_DEVEL
}


vrrp_instance VI_1 {
    state BACKUP
    interface eth0
    virtual_router_id 51
    priority 50
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.2.150/24
    }
}

六、验证Keepalived配置是否成功

1.查看192.168.2.128上 VIP是否绑定到eth0网卡上  ip a/ip addr


2.查看192.168.2.130上 VIP是否绑定到eth0网卡上


没有看到绑定就对了,因为两台Server只有一台才会显示有VIP,如果两台都看到VIP的话,你得查看一下Server上的防火墙是否关闭

3.手动关闭192.168.2.128上的keepalived /etc/init.d/keepalived stop再去查看这台Server的eth0网卡上是否还存在VIP


清楚的看到已近没有之前的VIP了,再去查看192.168.2.130上的eth0是否绑定了VIP,是否动态完成VIP漂移


成功完成VIP动态漂移

也可以查看日志信息 tail -f /var/log/messages


七、在192.168.2.131、192.168.2.132安装JDK

1.上传JDK到服务器

2.通过RPM安装JDKrpm -ivh jdk-7u65-linux-x64.rpm

3.配置环境变量

3.1 vim /etc/profile

3.2 

export JAVA_HOME=/usr/java/latest
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

3.3 source /etc/profile

八、安装RS1/RS2中的tomcat服务器

1. 下载tomcat服务器 wget http://mirrors.hust.edu.cn/apache/tomcat/tomcat-7/v7.0.70/bin/apache-tomcat-7.0.70.tar.gz

2. 解压tomcat服务器

2.1 gzip -d apache-tomcat-7.0.70.tar.gz

2.2 tar xf apache-tomcat-7.0.70.tar

3.修改tomcat的测试页面

4.开放8080端口

4.1 vim /etc/sysconfig/iptables

4.2 -A INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT

4.3 /etc/init.d/iptables restart

九、安装nginx代理服务器

1. 下载nginx wget http://nginx.org/download/nginx-1.8.1.tar.gz

2. 解压nginx  tar xf nginx-1.8.1.tar.gz -C /usr/local/

3. 创建软连接 ln -sv /usr/local/nginx-1.8.1/ /usr/local/nginx

4. 安装依赖软件 yum -y install make gcc gcc-c++ ncurses-devel zlib zlib-devel openssl openssl-devel pcre-devel

5. 编译nginx

./configure \
  --prefix=/usr/local/nginx \
  --conf-path=/usr/local/nginx/nginx.conf \
  --error-log-path=/var/log/nginx/error.log \
  --http-log-path=/var/log/nginx/access.log \
  --pid-path=/var/run/nginx/nginx.pid  \
  --lock-path=/var/lock/nginx.lock \
  --with-http_ssl_module \
  --with-http_flv_module \
  --with-http_stub_status_module \
  --with-http_gzip_static_module \
  --http-client-body-temp-path=/var/tmp/nginx/client/ \
  --http-proxy-temp-path=/var/tmp/nginx/proxy/ \
  --http-fastcgi-temp-path=/var/tmp/nginx/fcgi/ \
  --http-uwsgi-temp-path=/var/tmp/nginx/uwsgi \
  --http-scgi-temp-path=/var/tmp/nginx/scgi \
  --with-pcre

6.make && make install

7.创建开机自启动

7.1 创建nginx的启动文件  vim /etc/init.d/nginx

7.2 编写启动脚本

#!/bin/bash
# nginx Startup script for the Nginx HTTP Server
# it is v.0.0.2 version.
# chkconfig: - 85 15
# description: Nginx is a high-performance web and proxy server.
#              It has a lot of features, but it's not for everyone.
# processname: nginx
# pidfile: /var/run/nginx.pid
# config: /usr/local/nginx/conf/nginx.conf
nginxd=/usr/local/nginx/sbin/nginx
nginx_config=/usr/local/nginx/conf/nginx.conf
nginx_pid=/var/run/nginx.pid
RETVAL=0
prog="nginx"
# Source function library.
. /etc/rc.d/init.d/functions
# Source networking configuration.
. /etc/sysconfig/network
# Check that networking is up.
[ ${NETWORKING} = "no" ] && exit 0
[ -x $nginxd ] || exit 0
# Start nginx daemons functions.
start() {
if [ -e $nginx_pid ];then
   echo "nginx already running...."
   exit 1
fi
   echo -n $"Starting $prog: "
   daemon $nginxd -c ${nginx_config}
   RETVAL=$?
   echo
   [ $RETVAL = 0 ] && touch /var/lock/subsys/nginx
   return $RETVAL
}
# Stop nginx daemons functions.
stop() {
        echo -n $"Stopping $prog: "
        killproc $nginxd
        RETVAL=$?
        echo
        [ $RETVAL = 0 ] && rm -f /var/lock/subsys/nginx /var/run/nginx.pid
}
# reload nginx service functions.
reload() {
    echo -n $"Reloading $prog: "
    #kill -HUP `cat ${nginx_pid}`
    killproc $nginxd -HUP
    RETVAL=$?
    echo
}
# See how we were called.
case "$1" in
start)
        start
        ;;
stop)
        stop
        ;;
reload)
        reload
        ;;
restart)
        stop
        start
        ;;
status)
        status $prog
        RETVAL=$?
        ;;
*)
        echo $"Usage: $prog {start|stop|restart|reload|status|help}"
        exit 1
esac
exit $RETVAL

7.3 给启动脚本添加可执行权限 chmod 777 /etc/init.d/nginx

7.4 将启动脚本添加到系统服务中 chkconfig --add /etc/init.d/nginx

7.5 设置开机级别启动 chkconfig --level 35 nginx on

7.6 检查是否启动 chkconfig --list nginx


十、配置nginx代理服务器


十一、如果需要在keepalived服务器上开启防火墙必须在/etc/sysconfig/iptables添加vrrp协议通知规则-A INPUT -i eth0 -p vrrp -j ACCEPT

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值