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

[经验分享] haproxy调度web案例

[复制链接]

尚未签到

发表于 2019-1-1 13:42:12 | 显示全部楼层 |阅读模式
  一、实验架构图

  haproxy通过ACL规则来实现智能负载均衡
当输入bbs.linux.com时,haproxy将请求转发到后端bbs服务器
当输入blog.linux.com时,haproxy将请求转发到后端blog服务器
前端两台haproxy服务器通过部署keepalived来实现haproxy高可用
  二、准备工作
  系统版本:centos7
haproxy服务器
haproxy01    192.168.122.100
haproxy02    192.168.122.200
bbs服务器
web01          192.168.122.101
web02          192.168.166.102
blog服务器
web03           192.168.122.103
web04           192.168.122.104
关闭firewalld和SElinux,各主机均为固定ip
  三、部署bbs服务器和blog服务器的测试页面
  安装httpd并启动

[root@web01 ~]# yum install -y httpd
[root@web01 ~]# echo "web01.bbs.com" >/var/www/html/index.html
[root@web01 ~]# systemctl start httpd
[root@web01 ~]# systemctl enable httpd
  web01与web02测试页面分别为web01.bbs.com和web02.bbs.com
web03与web04测试页面分别为web03.blog.com和web04.blog.com
  四、在haproxy01主机上安装haproxy,并进行配置

[root@haproxy01 ~]# yum install -y haproxy
  配置文件所在位置

[root@haproxy01 ~]# rpm -qc haproxy
/etc/haproxy/haproxy.cfg
/etc/logrotate.d/haproxy
  打开并编辑配置文件

[root@haproxy01 ~]# vim /etc/haproxy/haproxy.cfg
global
maxconn 2000
nbproc 1
user nobody
group nobody
log 127.0.0.1 local0 info
daemon
pidfile /var/run/haproxy.pid
defaults
mode http
retries 3
timeout connect 5s
timeout client 10s
timeout server 30s
timeout check 2s
listen admin_status
bind 0.0.0.0:9088
mode http
log 127.0.0.1 local0 err
stats refresh 30s
stats uri /haproxy-status
stats realm welcome login
stats auth admin:admin
stats hide-version
stats admin if TRUE
frontend test-proxy
bind *:80
mode http
log global
option httplog
option forwardfor
acl host_bbs hdr_dom(host) -i bbs.linux.com
acl host_blog hdr_beg(host) -i blog.
use_backend server_bbs if host_bbs
use_backend server_blog if host_blog
backend server_bbs
mode http
option redispatch
cookie SERVERID
option abortonclose
balance roundrobin
server bbs01 192.168.122.101:80 cookie bbs01 weight 3 check inter 2000 rise 1 fall 2
server bbs02 192.168.122.102:80 cookie bbs02 weight 3 check inter 2000 rise 1 fall 2
backend server_blog
mode http
option redispatch
cookie SERVERID
option abortonclose
balance roundrobin
server blog01 192.168.122.103:80 cookie blog01 weight 3 check inter 2000 rise 1 fall 2
server blog02 192.168.122.104:80 cookie blog02 weight 3 check inter 2000 rise 1 fall 2
  启动haproxy服务

[root@haproxy01 ~]# systemctl start haproxy
[root@haproxy01 ~]# ss -antp |grep haproxy
LISTEN     0      128                       *:9088                     *:*      users:(("haproxy",8742,4),("haproxy",8741,4))
LISTEN     0      128                       *:80                       *:*      users:(("haproxy",8742,6),("haproxy",8741,6))
  五、阶段测试
打开浏览器,通过输入bbs.linux.com,可看到web01和web02的负载均衡效果。通过输入blog.linux.com,可看到web03和web04的负载均衡效果。




  六、测试访问haproxy的监控页面

  七、安装配置haproxy02
软件安装方法和配置文件与haproxy01一致

[root@haproxy02 ~]# yum install -y haproxy
[root@haproxy02 ~]# scp 192.168.122.100:/etc/haproxy/haproxy.cfg /etc/haproxy/
[root@haproxy02 ~]# systemctl start haproxy
[root@haproxy02 ~]# systemctl enable haproxy
  八、配置keepalived实现haproxy高可用
  分别在两台haproxy主机上安装keepalived

[root@haproxy01 ~]# yum install -y keepalived
haproxy01主机keepalived配置文件如下
[root@haproxy01 ~]# vim /etc/keepalived/keepalived.conf
    ! Configuration File for keepalived
global_defs {
router_id haproxy01
}
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 80
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass redhat
}
virtual_ipaddress {
192.168.122.111
}
}
[root@haproxy01 ~]# scp /etc/keepalived/keepalived.conf 192.168.122.200:/etc/keepalived/
haproxy02主机keepalived配置文件如下
[root@haproxy01 ~]# scp /etc/keepalived/keepalived.conf 192.168.122.200:/etc/keepalived/
! Configuration File for keepalived
global_defs {
router_id haproxy02
}
vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 80
priority 50
advert_int 1
authentication {
auth_type PASS
auth_pass redhat
}
virtual_ipaddress {
192.168.122.111
}
}
  分别启动keepalived服务

[root@haproxy01 ~]# systemctl start keepalived
[root@haproxy01 ~]# systemctl enable keepalived
ln -s '/usr/lib/systemd/system/keepalived.service' '/etc/systemd/system/multi-user.target.wants/keepalived.service'
[root@haproxy01 ~]# systemctl status keepalived
keepalived.service - LVS and VRRP High Availability Monitor
Loaded: loaded (/usr/lib/systemd/system/keepalived.service; enabled)
Active: active (running) since 二 2018-06-05 19:56:24 CST; 33s ago
Main PID: 8821 (keepalived)
CGroup: /system.slice/keepalived.service
├─8821 /usr/sbin/keepalived -D
├─8822 /usr/sbin/keepalived -D
└─8823 /usr/sbin/keepalived -D
[root@haproxy01 ~]# ip addr show eth0
2: eth0:  mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 52:54:00:4f:62:e6 brd ff:ff:ff:ff:ff:ff
inet 192.168.122.100/24 brd 192.168.122.255 scope global eth0
valid_lft forever preferred_lft forever
inet 192.168.122.111/32 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::5054:ff:fe4f:62e6/64 scope link
valid_lft forever preferred_lft forever
[root@haproxy02 ~]# systemctl start keepalived
[root@haproxy02 ~]# systemctl enable keepalived
ln -s '/usr/lib/systemd/system/keepalived.service' '/etc/systemd/system/multi-user.target.wants/keepalived.service'
[root@haproxy02 ~]# systemctl status keepalived
keepalived.service - LVS and VRRP High Availability Monitor
Loaded: loaded (/usr/lib/systemd/system/keepalived.service; enabled)
Active: active (running) since 二 2018-06-05 19:57:24 CST; 12s ago
Main PID: 8738 (keepalived)
CGroup: /system.slice/keepalived.service
├─8738 /usr/sbin/keepalived -D
├─8739 /usr/sbin/keepalived -D
└─8740 /usr/sbin/keepalived -D
  配置haproxy的记录日志

[root@haproxy02 ~]# vim /etc/sysconfig/rsyslog
# Options for rsyslogd
# Syslogd options are deprecated since rsyslog v3.
# If you want to use them, switch to compatibility mode 2 by "-c 2"
# See rsyslogd(8) for more details
SYSLOGD_OPTIONS="-c 2 -r"
[root@haproxy02 ~]# vim /etc/rsyslog.conf
$ModLoad imudp
$UDPServerRun 514
local0.*                                                /var/log/haproxy.log
[root@haproxy02 ~]# systemctl restart rsyslog.service haproxy.service
[root@haproxy02 ~]# ls /var/log/
anaconda  boot.log  cron   dmesg.old    lastlog  messages  rhsm    spooler   tuned  yum.log
audit     btmp      dmesg  haproxy.log  maillog  ppp       secure  tallylog  wtmp

[root@haproxy02 ~]# tail -f /var/log/haproxy.log
Jun  5 20:13:58 localhost haproxy[8805]: Proxy test-proxy started.



运维网声明 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-658312-1-1.html 上篇帖子: 打开haproxy的日志 下篇帖子: 在线修改haproxy配置文件
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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