1       安装配置keepalive

1.1      安装前准备

  1. 在home下创建omcr目录将ISO文件(rhel-server-7.1-x86_64-dvd.iso)上传到/home/omcr目录下
  2. 将ISO文件挂载为伪设备

mount –o loop /home/omcr/rhel-server-7.1-x86_64-dvd.iso  /mnt/cdrom

  1. 配置yum源,在/etc/yum.repos.d/目录下创建myYum.repo文件,将下面内容copy到该文件
[InstallMedia] #代表整个库的名字 不能有空格
name=Red Hat Enterprise Linux 7.1 #这个库的说明 没啥意义
baseurl=file:///mnt/cdrom #以什么方式传输 路径在哪里 方式可以有file ftp http
metadata_expire=-1
gpgcheck=0 #是否gpg文件来检查软件包的签名 1是 0 否
cost=500
enabled=1 #是否启用这个更新库 0表示不启用

 

  1. 安装openssl-devel

使用下面的命令查询是否安装,

rpm  -qa  | grep openssl-devel

  1. 为空说明未安装,执行下面命令

yum install -y openssl-devel

  1. 安装libnl-devel

使用下面的命令查询是否安装,

rpm  -qa  | grep  libnl-devel

为空说明未安装,执行下面命令

yum -y install libnl-devel

7.安装libnfnetlink-devel

将libnfnetlink-devel-1.0.1-4.el7.x86_64.rpm上传到/home/omcr目录下,然后执行

rpm –ivh  libnfnetlink-devel-1.0.1-4.el7.x86_64.rpm

 

1.2      安装keepalived

安装前准备工作成功执行完成之后,就可以开始安装Keepalived软件系统,步骤如下:

1.将keepalived-2.0.5.tar.gz源文件上传到/home/omcr目录下

2.解压keepalived-2.0.5.tar.gz源文件

tar  -zxvf  keepalived-2.0.5.tar.gz

3.编译并安装

cd  /home/omcr/ keepalived-2.0.5

./configure --prefix=/usr/local/keepalived

make && make install

以上命令执行完成,安装过程完成。

1.3      注册为系统服务

为了方便用户使用系统命令启停Keepalived服务,通过以下步骤将安装好的Keepalived软件注册为系统服务

1)

cp /usr/local/keepalived/sbin/keepalived /usr/sbin/

2)

cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/

1.4      配置keepalived启动脚本

在/etc/init.d/下创建keepalived

修改该文件权限为可执行

chmod  +x  /etc/init.d/keepalived

文件内容如下(用于keepalived定时检测代理的服务状态):

#!/bin/sh
#
# Startup script for the Keepalived daemon
#
# processname: keepalived
# pidfile: /var/run/keepalived.pid
# config: /etc/keepalived/keepalived.conf
# chkconfig: - 21 79
# description: Start and stop Keepalived
 
# Source function library
. /etc/rc.d/init.d/functions
 
# Source configuration file (we set KEEPALIVED_OPTIONS there)
. /etc/sysconfig/keepalived
 
RETVAL=0
 
prog="keepalived"
 
start() {
    echo -n $"Starting $prog: "
    daemon keepalived ${KEEPALIVED_OPTIONS}
    RETVAL=$?
    echo
    [ $RETVAL -eq 0 ] && touch /var/lock/subsys/$prog
}
 
stop() {
    echo -n $"Stopping $prog: "
    killproc keepalived
    RETVAL=$?
    echo
    [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/$prog
}
 
reload() {
    echo -n $"Reloading $prog: "
    killproc keepalived -1
    RETVAL=$?
    echo
}
 
# See how we were called.
case "$1" in
    start)
        start
        ;;
    stop)
        stop
        ;;
    reload)
        reload
        ;;
    restart)
        stop
        start
        ;;
    condrestart)
        if [ -f /var/lock/subsys/$prog ]; then
            stop
            start
        fi
        ;;
    status)
        status keepalived
        RETVAL=$?
        ;;
    *)
        echo "Usage: $0 {start|stop|reload|restart|condrestart|status}"
        RETVAL=1
esac
 
exit $RETVAL

1.5      配置keepalived的核心配置文件

将keepalive.conf和 check_haproxy.sh 、send_arp.sh文件分别上传到主备机/etc/keepalived目录下,编辑keepalive.config文件如下

 

global_defs {
  notification_email { #指定Keepalived在发生事情的时候,发送邮件通知,每行一个地址
    root@localhost
    }
 
notification_email_from keepalived@localhost #指定发件人
smtp_server 127.0.0.1 #发送email的smtp地址
smtp_connect_timeout 30 #超时时间
router_id haproxy     #运行Keepalived的机器标识号,主从机必须不同
}
 
vrrp_script chk_haproxy {                           
  script "/etc/keepalived/check_haproxy.sh"
  interval 2
  weight 2
}
 
vrrp_instance VI_1 {
  state BACKUP  #指定keepalive的角色MASTER代表主服务器BACKUP表示备用机
  interface ens1f0   #指定HA监测网络的接口
  virtual_router_id 51  #虚拟路由标识 同一vrrp实例只有一个,即主备机相同
  priority 99   #定义优先级,数字越大优先级越高 主机必须大于备机
  advert_int 1  #设定主备负载均衡器之间同步检查的时间间隔单位是秒
  unicast_src_ip  192.168.222.137 #本地ip地址
  unicast_peer {
                  192.168.222.136 #对端IP地址
                       }
  authentication { #设定验证类型和密码
    auth_type PASS #设定验证类型 有PASS和AH两种
    auth_pass 1111 #设置密码 同一个vrrp_instance实例下主备机必须设置相同才能正常通信
}
track_script { #执行监控的服务
    chk_haproxy
}
virtual_ipaddress { #keepalive的虚拟ip
    192.168.52.201
}
# notify_master "/etc/keepalived/send_arp.sh ens1f0   192.168.52.201  192.168.50.1"
}

 

1.6      配置keepalive服务自启动

设置开机自启动

chkconfig keepalived on

取消开机自启动

systemctl disable keepalived.service 取消开机自动启动

测试是否绑定成功

1)停掉服务

systemctl stop  keepalived    或者  service keepalived stop

2)重启

sudo service keepalived restart

3)运行 ip addr查看是否绑定成功

也可执行

systemctl status  keepalived

 

1.7      启停keepalive服务

keepalived被注册为系统服务后可以通过以下命令启动、停止服务或者查询服务的运行状态。

1)查询keepalived服务状态

systemctl status  keepalived    或者  service keepalived status

2)启动keepalived服务

systemctl start  keepalived    或者  service keepalived start

3)停止keepalived服务

systemctl stop  keepalived    或者  service keepalived stop


 

1       安装配置haproxy

1.1      安装前准备

配置syslog

vi  /etc/rsyslog.conf

开启UDP 514 端口

# Provides UDP syslog reception
$ModLoad imudp
$UDPServerRun 514

设置haproxy日志存放目录

local2.*  /var/log/haproxy.log

再修改/etc/sysconfig/rsyslog 

vi /etc/sysconfig/rsyslog

修改内容为

SYSLOGD_OPTIONS="-r -m 0"

 说明:-r:打开接受外来日志消息的功能,其监控514 UDP端口;

-x:关闭自动解析对方日志服务器的FQDN信息,这能避免DNS不完整所带来的麻烦;

-m:修改syslog的内部mark消息写入间隔时间(0为关闭),例如240为每隔240分钟写入一次"--MARK--"信息;

-h:默认情况下,syslog不会发送从远端接受过来的消息到其他主机,而使用该选项,则把该开关打开,所有

接受到的信息都可根据syslog.conf中定义的@主机转发过去

 

重启rsyslog服务

systemctl  restart   rsyslog

1.2      安装haproxy

安装前准备工作成功执行完成之后,就可以开始安装Haproxy软件系统,步骤如下:

1.将haproxy-1.5.18.tar.gz源文件上传到/home/omcr目录下

2.解压haproxy-1.5.18.tar.gz源文件

tar  -zxvf  haproxy-1.5.18.tar.gz

3.编译并安装

cd   /home/omcr/haproxy-1.5.18

uname -r    #查看系统内核版本号 结果3.10.0-229.el7.x86_64
make TARGET=linux3100  #3100代表系统内核版本号
make  install PREFIX=/usr/local/haproxy

以上命令执行完成,安装过程完成。

1.3      配置启动脚本

为了方便用户使用系统命令启停haproxy服务,通过以下步骤将安装好的haproxy软件注册为系统服务

在/etc/init.d/下创建haproxy

修改该文件权限为可执行

chmod  +x  /etc/init.d/ haproxy

文件内容如下:

#!/bin/sh
#chkconfig: 2345 10 90
#description:haproxy
# Source function library
. /etc/rc.d/init.d/functions
 
PROGNAME=haproxy
PROGDIR=/usr/local/haproxy
DAEMON=$PROGDIR/sbin/$PROGNAME
CONFIG=$PROGDIR/$PROGNAME.cfg
PIDFILE=$PROGDIR/$PROGNAME.pid
SCRIPTNAME=/etc/init.d/$PROGNAME
 
# Gracefully exit if the package has been removed.
test -x $DAEMON || exit 0
RETVAL=0
 
start()
{
       $DAEMON -f $CONFIG
       RETVAL=$?
       echo -e "$PROGNAME started"
}
 
stop()
{
       haproxy_pid="$(cat $PIDFILE)"
       kill -9 $haproxy_pid
       RETVAL=$?
       echo -e "$PROGNAME stoped "
}
 
restart()
{
       $DAEMON -f $CONFIG -p $PIDFILE -sf $(cat $PIDFILE)
       RETVAL=$?
       echo -e "$PROGNAME restarted "
}
 
case "$1" in
 start)
       start
       ;;
 stop)
       stop
       ;;
 restart)
       restart
       ;;
 status)
       status $PROGNAME
        RETVAL=$?
        ;;
 *)
       echo "Usage: $SCRIPTNAME {start|stop|restart}" >&2
RETVAL=1
       ;;
esac
 
exit $RETVAL

1.1      配置haproxy的核心配置文件

将haproxy.cfg文件分别上传到主备机/usr/local/haproxy目录下,编辑haproxy.cfg文件将其中的IP地址修改为实际的集群服务节点IP地址。

#---------------------------------------------------------------------
# Example configuration for a possible web application.  See the
# full configuration options online.
#
#   http://haproxy.1wt.eu/download/1.4/doc/configuration.txt
#
#---------------------------------------------------------------------
 
#---------------------------------------------------------------------
# Global settings
#---------------------------------------------------------------------
global 
    # to have these messages end up in /var/log/haproxy.log you will
    # need to:
    #
    # 1) configure syslog to accept network log events.  This is done
    #    by adding the '-r' option to the SYSLOGD_OPTIONS in
    #    /etc/sysconfig/syslog
    #
    # 2) configure local2 events to go to the /var/log/haproxy.log
    #   file. A line like the following can be added to
    #   /etc/sysconfig/syslog
    #
    #    local2.*                       /var/log/haproxy.log
    #
    log         127.0.0.1 local2
 
    chroot      /usr/local/haproxy
    pidfile     /usr/local/haproxy/haproxy.pid
    maxconn     4000
    user        root
    group       root
    daemon
 
    # turn on stats unix socket
    stats socket  /usr/local/haproxy/stats
 
#---------------------------------------------------------------------
# common defaults that all the 'listen' and 'backend' sections will
# use if not designated in their block
#---------------------------------------------------------------------
defaults
    mode                    tcp      #默认的模式mode{mode|http|health},tcp4层http7层,health只会返回ok  
    log                     global
    option                  tcplog  #日志类别有httplog
    option                  dontlognull
    option http-server-close
 #   option forwardfor       except 127.0.0.0/8
    option                  redispatch
    retries                 3      #3次连接失败就默认服务器不可用
    timeout http-request    10s    
    timeout queue           1m
    timeout connect         10s
    timeout client          1m
    timeout server          1m
    timeout http-keep-alive 10s
    timeout check           10s
    maxconn                 3000
 
#---------------------------------------------------------------------
# main frontend which proxys to the backends
#---------------------------------------------------------------------
frontend   rabbitmq
    bind *:5672
    default_backend             rabbitmq_cluster
 
frontend  redis
    bind *:6379
    default_backend             redis_cluster
frontend  mycat
    bind *:8066
    default_backend             mycat_cluster
 
 
#---------------------------------------------------------------------
# round robin balancing between the various backends
#---------------------------------------------------------------------
backend  rabbitmq_cluster
    mode   tcp
    balance     roundrobin
    server master  192.168.53.11:5672 check inter 2000 rise 2 fall 3
    server slaver  192.168.53.12:5672 check inter 2000 rise 2 fall  3
backend redis_cluster
    mode   tcp
    balance     roundrobin
    server master  192.168.53.11:6379 check inter 2000 rise 2 fall 3
    server slaver  192.168.53.12:6379 check inter 2000 rise 2 fall  3
backend mycat_cluster
    mode   tcp
    balance     roundrobin
    server master  192.168.52.155:8066 check inter 2000 rise 2 fall 3
    server slaver  192.168.53.12:8066  check inter 2000 rise 2 fall  3
listen  cluster_monitoring
    bind *:9098       #监听端口
    mode http        
    option httplog      #采用http日志格式
    timeout client 3h
    timeout server 3h
    timeout connect 3h
    stats enable
    stats uri /stats      #统计页面url
    stats refresh 5s     #统计页面自动刷新时间

 

 

1.2      配置haproxy服务自启动

如需配置服务自启动需在上面的配置文件(/etc/rc.d/init.d/haproxy)中添加下面两句到#!/bin/bash之后

#chkconfig: 2345 10 90 

#description:haproxy

说明:

----其中2345是默认启动级别,级别有0-6共7个级别。
----等级0表示:表示关机
----等级1表示:单用户模式
----等级2表示:无网络连接的多用户命令行模式
----等级3表示:有网络连接的多用户命令行模式
----等级4表示:不可用
----等级5表示:带图形界面的多用户模式
----等级6表示:重新启动
----10是启动优先级,90是停机优先级,优先级范围是0-100,数字越大,优先级越低。

 

再执行

chkconfig --add haproxy

重启服务器执行如下命令查看是否配置成功

netstat -ntlp | grep haproxy

1.3      启停haproxy服务

haproxy被注册为系统服务后可以通过以下命令启动、停止服务或者查询服务的运行状态。

1)查询haproxy服务状态

systemctl status  haproxy

2)启动haproxy服务

systemctl start  haproxy

3)停止haproxy服务

systemctl stop  haproxy


 

 

 

愿得一人心,白首不分离;   结发为夫妻,恩爱两不疑。