keepalived+haproxy高可用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了keepalived+haproxy高可用相关的知识,希望对你有一定的参考价值。

环境:
主Haproxy服务器    192.168.80.100   keepalived+Haproxy
备Haproxy服务器    192.168.80.101   keepalived+Haproxy
web服务器1             192.168.80.102  httpd(nginx、tomcat)
web服务器2             192.168.80.103  httpd
80.100和80.101需要联网

———————————————————————————————————————
在80.100虚拟机上:

systemctl stop firewalld        //关闭防火墙
setenforce 0                 //关闭监控
cd /etc/yum.repos.d/    //进入目录
cp back/* ./         //把back里内容移动到上一个目录
ls               //查看目录内容

技术分享图片

yum install -y epel-release
yum install ntp -y           //安装ntp
ntpdate time1.aliyun.com        //同步网络时间
date

技术分享图片

yum install keepalived -y         //安装keepalived
cd       //回到根目录
vi /etc/keepalived/keepalived.conf`
删除所有内容并添加以下内容:
! Configuration File for keepalived
global_defs {
        route_id haproxy-01
   }
vrrp_script haproxy {    定义一个热备脚本取名为haproxy
        script "/opt/haproxy.sh"    # 检测 haproxy 状态的脚本路径
        interval 2    # 检测时间间隔
        weight 2    # 如果条件成立,权重+2
}
vrrp_instance VI_1 {
    state MASTER
    interface ens32
    virtual_router_id 51
    priority 150
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    track_script {    # 将 track_script 块加入 instance 配置块
        haproxy    # 检查 HAProxy 服务是否存活
        }
    virtual_ipaddress {
        192.168.80.188
    }
}

:wq

技术分享图片

scp /etc/keepalived/keepalived.conf [email protected]:/etc/keepalived/keepalived.conf      //把keepalived.conf传送到80.101中
yes
root密码

技术分享图片

yum install lrz* -y //安装上传软件
把haproxy软件包拉入
技术分享图片

scp haproxy-1.5.15.tar.gz [email protected]:/root      //把haproxy软件包传送到80.101中
密码

技术分享图片

tar xf haproxy-1.5.15.tar.gz -C /opt/          //解压haproxy软件包
cd /opt/haproxy-1.5.15/           
源码编译安装haproxy
yum install -y pcre-devel bzip2-devel gcc gcc-c++ make
make TARGET=linux26  PREFIX=/usr/local/haproxy    //标识64为系统
make install PREFIX=/usr/local/haproxy
mkdir /etc/haproxy          //创建目录
cd
useradd -s /sbin/nologin -M  haproxy
id  haproxy

技术分享图片

cd /opt/haproxy-1.5.15/
cp examples/haproxy.cfg /etc/haproxy
vi /etc/haproxy/haproxy.cfg
修改以下内容:
#       chroot /usr/share/haproxy        注释这一行
uid 1000
gid 1000
在default模块下
统计页面模块内容
listen admin_stats
    bind 0.0.0.0:8089
    stats enable
    mode http
    log global
    stats uri  /stats
    stats realm Haproxy Statistics
    stats auth  admin:admin
    #stats hide-version
    stats admin if TRUE
    stats refresh 30s
web服务器/终端
listen webcluster
        bind 0.0.0.0:80
        mode http
        option httpchk GET /index.html
        log global
        maxconn 3000
        balance roundrobin
server web01 192.168.80.102:80 check inter 2000 fall 5
server web02 192.168.80.103:80 check inter 2000 fall 5

:wq

技术分享图片
技术分享图片

cd /opt/
ls
技术分享图片

vi haproxy.sh
#!/bin/bash
if [ $(ps -C haproxy --no-header | wc -l) -eq 0 ];then
        /usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg      启动haproxy服务
fi
sleep 2     等待2秒
if [ $(ps -C haproxy --no-header | wc -l) -eq 0 ];then
        service keepalived stop
fi

   :wq        //保存退出

技术分享图片

chmod +x /opt/haproxy.sh       //给这个文件设置权限
cd /opt/haproxy-1.5.15/
cp examples/haproxy.init /etc/init.d/haproxy
chmod +x /etc/init.d/haproxy
ll /etc/init.d/haproxy
chkconfig --add haproxy
cat /var/log/messages
ln -s /usr/local/haproxy/sbin/haproxy  /usr/sbin/haproxy     //软链接

技术分享图片

service haproxy start //启动服务
技术分享图片

netstat -anpt | grep haproxy
技术分享图片

在网页上输入192.168.80.100:8089/stats
技术分享图片

scp haproxy.cfg [email protected]:/etc/haproxy.cfg             //把haproxy.cfg 传送到80.101虚拟机上
密码

技术分享图片

service haproxy stop
netstat -anpt | grep haproxy
systemctl start keepalived
ip addr show ens32
netstat -anpt | grep haproxy

技术分享图片

————————————————————————————————————————
在80.101虚拟机上:

systemctl stop firewalld        //关闭防火墙
setenforce 0                 //关闭监控
cd /etc/yum.repos.d/    //进入目录
cp back/* ./         //把back里内容移动到上一个目录
ls               //查看目录内容

技术分享图片

yum install -y epel-release
yum install ntp -y           //安装ntp
ntpdate time1.aliyun.com        //同步网络时间
date
yum install keepalived -y         //安装keepalived
cd       //回到根目录

vi /etc/keepalived/keepalived.conf //进入成以下内容:
技术分享图片
修改成以下内容:
技术分享图片

ls
tar xf haproxy-1.5.15.tar.gz -C /opt/
cd /opt/haproxy-1.5.15/

技术分享图片

源码编译安装haproxy
yum install -y pcre-devel bzip2-devel gcc gcc-c++ make
make TARGET=linux26  PREFIX=/usr/local/haproxy    //标识64为系统
make install PREFIX=/usr/local/haproxy
mkdir /etc/haproxy
useradd -s /sbin/nologin -M  haproxy
id  haproxy

技术分享图片

ls /etc/haproxy/
cp examples/haproxy.init /etc/init.d/haproxy
chmod +x /etc/init.d/haproxy             //给这个文件设置权限
chkconfig --add haproxy
ln -s /usr/local/haproxy/sbin/haproxy  /usr/sbin/haproxy     //软链接

技术分享图片

service haproxy start        //启动服务
netstat -anpt | grep haproxy
service haproxy stop
netstat -anpt | grep haproxy

cd /opt/

vi haproxy.sh
#!/bin/bash
#Filename:
A=$(ip addr | grep 192.168.80.188/32 | grep -v grep | wc -l)
if [ $A -gt 0 ]; then
        service haproxy start
else
        service haproxy stop
fi

   :wq
chmod +x haproxy.sh         //设置权限
ll                          
systemctl start keepalived     
ip addr show ens32
netstat -anpt | grep haproxy

————————————————————————————————————————
在80.102虚拟机上:

systemctl stop firewalld      //关闭防火墙
setenforce 0          //关闭监控

yum install httpd -y //安装httpd

vi /etc/httpd/conf/httpd.conf
把ServerName www.example.com:80 前面的#删除

技术分享图片

cd /var/www/html/       //进入这个目录
echo "<h1>server aa</h1>" > index.html

systemctl start httpd //启动服务

在网页上输入192.168.80.102
技术分享图片

————————————————————————————————————————
在80.103虚拟机上:

systemctl stop firewalld      //关闭防火墙
setenforce 0          //关闭监控

yum install httpd -y //安装httpd

vi /etc/httpd/conf/httpd.conf
把ServerName www.example.com:80 前面的#删除

技术分享图片

cd /var/www/html/       //进入这个目录
echo "<h1>server bb</h1>" > index.html

systemctl start httpd //启动服务

在网页上输入192.168.80.103
技术分享图片

以上是关于keepalived+haproxy高可用的主要内容,如果未能解决你的问题,请参考以下文章

Keepalived配置实现HaProxy高可用

HAProxy+Keepalived实现Mycat高可用

HAProxy+Keepalived实现Mycat高可用

keepalived + haproxy + mysql 构建高可用数据库

HaProxy+Keepalived+Mycat高可用群集配置

keepalived+haproxy高可用