keepalived 和haproxy 搭建

1、haproxy +keepalived 部署

  1. 准备工作
    1. 准备安装包 haproxy-1.7.8.tar.gz 与 keepalived-2.0.18.tar.gz 
    2. 准备服务器两台 192.168.20.112,192.168.20.113
    3. 准备浮动ip(同网段)  192.168.20.114

2、Harpoxy安装

  1. 解压 :命令: tar zxvf haproxy-1.7.8.tar.gz
  2. # cd haproxy-1.7.8

               命令:# make PREFIX=/data/haproxy/configureHaproxy TARGET=linux2628

keepalived 和haproxy 搭建_第1张图片

3、安装

                命令: make install PREFIX=/data/harpoxy/configureHaproxy

                执行完这一步/data/haproxy/ 路劲下面将会有个configureHaproxy 文件夹

keepalived 和haproxy 搭建_第2张图片

                PREFIX 为指定的安装路径

                TARGET则根据当前操作系统内核版本指定

                         linux22 for Linux 2.2
                        - linux24 for Linux 2.4 and above (default)
                        - linux24e for Linux 2.4 with support for a working epoll (> 0.21)
                        - linux26 for Linux 2.6 and above
                        - linux2628 for Linux 2.6.28, 3.x, and above (enables splice and tproxy)

                本文的操作系统内核版本为3.10.0,TARGET指定为 linux2628。

 4、haproxy 配置

         创建修改配置文件

                命令: cd /data/haproxy/configureHaproxy

                命令: mkdir conf

                命令:cd conf

                命令:vi haproxy.cfg  

        输入一下内容

keepalived 和haproxy 搭建_第3张图片

具体内容如下

                global

                    log 127.0.0.1 local3 info

                    user haproxy

                    group haproxy

                    daemon

                    maxconn 4000

                    pidfile /data/haproxy/configureHaproxy/conf/haproxy.pid

                defaults

                    log global

                    mode tcp                  #所处理的类别,默认采用http模式,可配置成tcp作4层消息转发

                    maxconn 4096              #限制单个进程的最大连接数

                    option tcplog            #http 日志格式

                    option dontlognull        #不记录空连接

                    option forwardfor         #如果后端服务器需要获得客户端真实ip需要配置的参数,可以从Http Header中获得客户端ip

                    option httpclose          #每次请求完毕后主动关闭http通道,haproxy不支持keep-alive,只能模拟这种模式的实现

                    option abortonclose       #当服务器负载很高的时候,自动结束掉当前队列处理比较久的连接

                    option redispatch         #在连接失败或断开的情况下,允许当前会话被重新分发

                    retries 3                 #设置在一个服务器上链接失败后的重连次数

                    balance source            #表示根据请求源IP,这个跟Nginx的IP_hash机制类似,我们用其作为解决session问题的一种方法。

                    timeout client 30s        #设置客户端的最大超时时间(毫秒)

                    timeout connect 5s        #设置等待连接到服务器成功的最大时间

                    timeout server 30s        #设置服务器端的最大超时时间

                    timeout check 5s          #心跳检测时间

                frontend  secure              #自定义一个frontend,也可以放在listen或者backend中

                    bind *:8080               #监听的ip端口号

                    stats enable              #开关

                    mode http

                    option httplog

                    log    global

                    maxconn 10

                    stats  uri  /admin  #访问的uri   ip:8888/admin?admin

                    stats auth admin:admin    #认证用户名和密码

                    stats hide-version        #隐藏HAProxy的版本号

                    stats admin if TRUE       #管理界面,如果认证成功了,可通过webui管理节点

                    stats  refresh  30s       #统计页面自动刷新时间

                frontend tcp_front

                    bind *:8888

                    #haproxy的状态管理页面,通过/haproxy?stats来访问

                    default_backend tcp_back

                backend tcp_back

                    mode tcp

                    balance roundrobin

                    server redis-233 192.168.20.112:8888  check inter 2000 fall 5

                    server redis-234 192.168.20.113:8889 check inter 2000 fall 5

        在conf 路劲下面创建一个haproxy.pid

        两台服务器配置一样

        启停haproxy

              命令:  service haproxy start

               命令: service haproxy stop

        重启

        命令:service haproxy restart

5、Keepalived 安装

  1. 进入执行目录解压

                命令:tar -zxvf keepalived-2.0.18.tar.gz 并进入目录

                有可能需要依赖

                yum -y install libnl libnl-devel

​​​​​​​     2.执行配置,指定路径

        命令:./configure --prefix=/data/keepalived/configureKeepalived/

keepalived 和haproxy 搭建_第4张图片

        ​​​​​​​ 3.编译

                命令:make && make install

keepalived 和haproxy 搭建_第5张图片

4.拷贝配置文件

  1. #拷贝源码中的keepalived  /etc/init.d/

                命令:cp /data/keepalived/keepalived-2.0.18/keepalived/etc/init.d/keepalived /etc/init.d/

​​​​​​​​​​​​​​      2.#拷贝编译后的 keepalived   /etc/sysconfig/

命令:cp /data/keepalived/configureKeepalived/etc/sysconfig/keepalived  /etc/sysconfig/

​​​​​​​​​​​​​​        3.创建文件夹

                 命令:mkdir /etc/keepalived

​​​​​​​​​​​​​​        4. 把配置文件移动到文件夹中

         命令:cp /data/keepalived/configureKeepalived/etc/keepalived/keepalived.conf  /etc/keepalived/

​​​​​​​​​​​​​​        5.把执行文件移动到/usr/sbin 下面

                 命令:cp /data/keepalived/configureKeepalived/sbin/keepalived  /usr/sbin/

​​​​​​​​​​​​​​        6.修改配置文件keepalived.conf 输入一下内容

                global_defs {

                   smtp_connect_timeout 30

                   router_id LVS_DEVEL02  #两个服务器不能一样

                }

                vrrp_instance VI_1 {

                    state BACKUP    #备份服务器 是backup

                    interface eno16777736

                    virtual_router_id 51

                    priority 90    #优先级要低 (两台服务器不一样 搞得问主机)

                    advert_int 1

                    authentication {

                        auth_type PASS

                        auth_pass 1111

                    }

                    virtual_ipaddress {

                        192.168.20.114    #漂移ip

                    }

}

​​​​​​​6、创建检查脚本

        检查服务器简况状态: 比如haproxy 停止了但是keepalived 并没有停止 

        这个使用需要使用脚本来进行切换: 脚本如下:

        "check_haproxy.sh" 12L, 474C

        #!/bin/bash

        #echo "`date` haproxy is dead1" >> /etc/keepalived/aa.log

        status=$(ps aux|grep haproxy | grep -v grep | grep -v bash | wc -l)

        #echo "`date` haproxy is dead2" >> /etc/keepalived/aa.log

        if [ "${status}" = "0" ]; then

        #    echo "`date` haproxy is dead" >> /etc/keepalived/aa.log

            systemctl  start  haproxy

            status2=$(ps aux|grep haproxy | grep -v grep | grep -v bash |wc -l)

            if [ "${status2}" = "0"  ]; then

                   systemctl stop keepalived

            fi

        fi

​​​​​​​7、​​​​​​​​​​​​​​启动

        命令:systemctl start keepalived

你可能感兴趣的:(keepalived,haproxy,服务器,linux)