keepalived+haproxy高可用简单操作

准备四台虚拟其中两台用来部署httpd

另外两台虚拟机先同步网络时间
yum install ntp -y
ntpdate time1.aliyum.com

之后安装keepalived

yum install keepalived -y

到在主虚拟机keepalived主配置文件中将配置文件全部删除并加入一下配置文件

    vi /etc/keepalived/keepalived.con

! Configuration File for keepalived
global_defs {
        route_id haproxy-01
   }
vrrp_script haproxy {    
        script "/opt/haproxy.sh"  
        interval 2 
        weight 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 {    
        haproxy    
        }
    virtual_ipaddress {
        192.168.80.188
    }
}

然后将次虚拟机的以上配置文件发送到从虚拟机上

scp /etc/keepalived/keepalived.conf [email protected]:/etc/keepalived/keepalived.conf 

在这里插入图片描述
在这里插入图片描述

在里面更改route_id haproxy-01为route_id haproxy-02
setate MASTER改为setate BACKUP
priority150改为100

配置文件改动实在从虚拟机中进行

在主虚拟机中安装上传工具

yum install lrz* -y

haproxy安装包 将安装包拖到根目录下
https://pan.baidu.com/s/1WvKXj2F2Uww50Haa7jcG2w
从服务器也要进行同样的操作,也可以使用scp将包发送到从服务器中

scp haproxy-1.5.15.tar.gz [email protected]:/root

将包解压到/opt目录下

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

cd到/opt/ haproxy-1.5.15目录下安装环境 并编译环境,从服务器也要编译安装

    yum install -y \
    pcre-devel \
    bzip2-devel \
    gcc \
    gcc-c++ \
    make
    
make TARGET=linux26  PREFIX=/usr/local/haproxy
make install PREFIX=/usr/local/haproxy

创建配置文件mkdir /etc/haproxy
将examples/haproxy.cfg拷贝到/etchaproxy

cp examples/haproxy.cfg /etc/haproxy/

id haproxy 查看用户uid和gid
到haproxy配置文件中修改

vi /etc/haproxy/haproxy.cfg

将chroot /usr/share/haproxy注释掉
吧uid和gid该为用户对应的
将defaults之后的模块删掉,(不包括defaults模块)并加入一下配置

    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

   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(这里的IP地址为之前部署的两台httpdu虚拟机地址)

cp到opt目录下创建vi haproxy.sh并加入一下内容

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

保存退出为haproxy.ch加权限并加入到程序用户中

chmod +x /opt/haproxy.sh
useradd -s /sbin/nologin -M  haproxy

cd /opthaproxy-1.5.15
   cpexamples/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(软链接)

在网页中输入主服务器ip地址加:8089/stats查看是否成功
在这里插入图片描述

从服务器上也进行相同的操作

有一点不一样的是在vi /opt/haproxy 配置文件中加入

#!/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

关闭haproxy并开启keepalived
用ip add show ens33如果有192.168.80.188就是成功了在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_35734972/article/details/86083600