设为首页 收藏本站
查看: 856|回复: 0

[经验分享] 高可用Web架构Keepalived+Haproxy

[复制链接]

尚未签到

发表于 2018-12-28 12:07:38 | 显示全部楼层 |阅读模式
  此篇文章比较适合新手,因为这个是我一步一步搭建的,之前也没有接触过,期间遇到的问题都有陈列。

  一、安装环境:
  (因为我安装的系统是CentOS6.3 basic 所以很多依赖包是没有安装的,因此在安装的过程中会出现一些报错,需要我安装依赖包,为了让大家更加明白不同报错的解决方法,本人将每一个报错的解决方法逐一列出)
  HA01、02作为提供keepalived+haproxy的服务主机,WEB01、02作为后端的App Server.
  HA01:192.168.10.100    MASTER
  HA02:192.168.10.101    BACKUP
  VIP:192.168.10.110
  WEB01:192.168.10.200
  WEB02:192.168.10.201
  

  二、编译安装keepalived

  [root@HA01 ~]#wget http://www.keepalived.org/software/keepalived-1.2.7.tar.gz
  [root@HA01 ~]# tar -zxvf keepalived-1.2.7.tar.gz
  [root@HA01 ~]# cd keepalived-1.2.7
  [root@HA01 keepalived-1.2.7]# ./configure --sysconfdir=/etc
  报错:
checking for gcc... no
checking for cc... no
checking for cl.exe... No  解决:[root@HA01keepalived-1.2.7]# yum -y install gcc
  [root@HA01 keepalived-1.2.7]# ./configure --sysconfdir=/etc
  报错:
configure: error:
!!!OpenSSL is not properly installed on your system. !!!
!!!Can not include OpenSSL headers files.!!!  解决:[root@HA01keepalived-1.2.7]# yum -y install openssl-devel
  [root@HA01 keepalived-1.2.7]# ./configure --sysconfdir=/etc
  报错:

configure: error: Popt libraries isrequired  解决:[root@HA01keepalived-1.2.7]#yum -y install popt-devel
  [root@HA01 keepalived-1.2.7]# ./configure --sysconfdir=/etc
  到这里keepalived安装完成
  下面需要进行编译
  先安装make依赖包
  [root@HA01 keepalived-1.2.7]#yum -y install make
  [root@HA01 keepalived-1.2.7]# make && make install//编译
  编译完成之后需要修改配置文件
  [root@HA01keepalived-1.2.7]# vi /etc/keepalived/keepalived.conf
! Configuration File for keepalived
#global_defs {
#   notification_email {
#     gaoming@123.com
#   }
#   notification_email_from gaoming@123.com
#   smtp_server 192.168.200.1
#   smtp_connect_timeout 30
#   router_id LVS_DEVEL
#}
vrrp_instance VI_1 {
    state MASTER          #备机服务器HA02上将MASTER改为BACKUP
    interface eth0
    virtual_router_id 51
    priority 100             #备机服务器HA02上将100改为99
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.10.110/24 dev eth0 scope global
    }
}
real_server 192.168.10.100 80 {    #备机服务器HA02上将IP改为192.168.10.101
TCP_CHECK {
    }
}  修改了之后分别启动keepalived
  [root@HA01 keepalived-1.2.7]#/etc/init.d/keepalived start
  出现错误:正在启动keepalived:/bin/bash:keepalived: command not found
  解决方法:将文件keepalived文件cp到/usr/sbin/
  [root@HA01 keepalived-1.2.7]# cp /usr/local/sbin/keepalived /usr/sbin/
  [root@HA01 keepalived-1.2.7]#/etc/init.d/keepalived start
  测试
  [root@HA01 ~]# ip add
  2: eth0: mtu 1500 qdisc pfifo_fast state UP qlen1000
  link/ether 00:0c:29:22:a5:d0 brd ff:ff:ff:ff:ff:ff
  inet 192.168.10.100/24 brd 192.168.10.255 scope global eth0
  inet 192.168.10.110/24 scope global secondary eth0
  inet6 fe80::20c:29ff:fe22:a5d0/64 scope link
  valid_lft forever preferred_lft forever
  [root@HA02 ~]# ip add
  2: eth0: mtu 1500 qdisc pfifo_fast state UP qlen 1000
  link/ether 00:0c:29:03:a8:15 brd ff:ff:ff:ff:ff:ff
  inet 192.168.10.101/24 brd 192.168.10.255 scope global eth0
  inet6 fe80::20c:29ff:fe03:a815/64 scope link
  valid_lft forever preferred_lft forever
  停了主上的keepalived,备上将接管keepalived服务
  [root@HA02 ~]# ip add
  2: eth0: mtu 1500 qdisc pfifo_fast state UP qlen1000
  link/ether 00:0c:29:03:a8:15 brd ff:ff:ff:ff:ff:ff
  inet 192.168.10.101/24 brd 192.168.10.255 scope global eth0
  inet 192.168.10.110/24 scope global secondary eth0
  inet6 fe80::20c:29ff:fe03:a815/64 scope link
  valid_lft forever preferred_lft forever
  

  三、编译安装Haproxy
  [root@HA02 ~]#wget http://haproxy.1wt.eu/download/1.4/src/haproxy-1.4.22.tar.gz
  [root@HA02 ~]#tar -zxvf haproxy-1.4.22.tar.gz
  [root@HA02 ~]#cd haproxy-1.4.22
  [root@HA01 haproxy-1.4.22]#groupadd haproxy
  [root@HA01 haproxy-1.4.22]#useradd haproxy -g haproxy
  [root@HA01 haproxy-1.4.22]#make TARGET=linux26 PREFIX=/usr/local/haproxy
  [root@HA01 haproxy-1.4.22]# make install PREFIX=/usr/local/haproxy
  

  1.编辑配置文件
  [root@HA01selinux]# vi /etc/haproxy/haproxy.cfg
global
    log 127.0.0.1 local2
#    log 127.0.0.1 local1 notice
#    maxconn 4096
    user haproxy
    group haproxy
    daemon
defaults
    log global
    mode http
    option tcplog
    option dontlognull
    retries 3
    option redispatch
    maxconn 20000
    contimeout 3600s
    clitimeout 3600s
    srvtimeout 3600s
listen App :8083            #提供给前端的port
    mode    http
    option forwardfor
    option  httpclose
    option  httpchk GET /index.jsp
    balance roundrobin
#    balance source
server Server1 192.168.10.200:8082 check inter 30000 rise 1 fall 2  #后端App Server IP&port
server Server2 192.168.10.201:8082 check inter 30000 rise 1 fall 2  #后端App Server IP&port
listen http-in          #haproxy监控配置
    bind :8080      #监听端口
    mode http
    stats refresh 5s
    stats auth  admin:password      #login账号密码
    stats uri       /monitor        #url地址  2.Init脚本的配置
  [root@HA01 haproxy-1.4.22]#cat /etc/init.d/haproxy
#!/bin/sh
#
# haproxy
#
# chkconfig:   - 85 15
# description:  HAProxy is a free, very fast and reliable solution \
#               offering high availability, load balancing, and \
#               proxying for TCP and  HTTP-based applications
# processname: haproxy
# config:      /etc/haproxy/haproxy.cfg
# pidfile:     /var/run/haproxy.pid
# Source function library.
. /etc/rc.d/init.d/functions
# Source networking configuration.
. /etc/sysconfig/network
# Check that networking is up.
[ "$NETWORKING" = "no" ] && exit 0
exec="/usr/sbin/haproxy"
prog=$(basename $exec)
[ -e /etc/sysconfig/$prog ] && . /etc/sysconfig/$prog
lockfile=/var/lock/subsys/haproxy
check() {
    $exec -c -V -f /etc/$prog/$prog.cfg
}
start() {
    $exec -c -q -f /etc/$prog/$prog.cfg
    if [ $? -ne 0 ]; then
        echo "Errors in configuration file, check with $prog check."
        return 1
    fi
    echo -n $"Starting $prog: "
    # start it up here, usually something like "daemon $exec"
    daemon $exec -D -f /etc/$prog/$prog.cfg -p /var/run/$prog.pid
    retval=$?
    echo
    [ $retval -eq 0 ] && touch $lockfile
    return $retval
}
stop() {
    echo -n $"Stopping $prog: "
    # stop it here, often "killproc $prog"
    killproc $prog
    retval=$?
    echo
    [ $retval -eq 0 ] && rm -f $lockfile
    return $retval
}
restart() {
    $exec -c -q -f /etc/$prog/$prog.cfg
    if [ $? -ne 0 ]; then
        echo "Errors in configuration file, check with $prog check."
        return 1
    fi
    stop
    start
}
reload() {
    $exec -c -q -f /etc/$prog/$prog.cfg
    if [ $? -ne 0 ]; then
        echo "Errors in configuration file, check with $prog check."
        return 1
    fi
    echo -n $"Reloading $prog: "
    $exec -D -f /etc/$prog/$prog.cfg -p /var/run/$prog.pid -sf $(cat /var/run/$prog.pid)
    retval=$?
    echo
    return $retval
}
force_reload() {
    restart
}
fdr_status() {
    status $prog
}
case "$1" in
    start|stop|restart|reload)
        $1
        ;;
    force-reload)
        force_reload
        ;;
    check)
        check
        ;;
    status)
        fdr_status
        ;;
    condrestart|try-restart)
        [ ! -f $lockfile ] || restart
        ;;
    *)
        echo $"Usage: $0 {start|stop|status|restart|try-restart|reload|force-reload}"
        exit 2
esac  [root@HA01 haproxy-1.4.22]# chmod a+x/etc/init.d/haproxy
  [root@HA01 haproxy-1.4.22]# chkconfig --add haproxy
  4.启动服务
  [root@HA01 haproxy-1.4.22]#service haproxy start
  四、测试
  使用VIP测试进入haproxy监控界面(这是我公司现在的架构)





运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-656862-1-1.html 上篇帖子: keepalived指定日志文件 下篇帖子: 基于Keepalived实现LVS双主高可用集群
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表