首页 热点资讯 义务教育 高等教育 出国留学 考研考公
您的当前位置:首页正文

HAproxy + Docker 搭建 Tomcat高可用实验环

2024-12-18 来源:华拓网

需求:现有一个对外的web服务需要实行高可用HA

要求: 应用版本统一部署

技术选型:HAproxy + Docker

容器节点数: 2个够了

name : tocmat-01 端口18080

name :  tocmat-02 端口28080 


Docker image使用tomcat:latest 。。评分最高那个

创建命令:

docker run --name tocmat-01\

-v /home/user/tomcat_data/conf:/usr/local/tomcat/conf \

-v /home/user/tomcat_data/webapps:/usr/local/tomcat/webapps \

-p 18080:8080 \

-it

tomcat

说明:

使用-v 映射本地host的设置文件夹和应用部署目录到容器,容器启动的时候就会自动加载文件夹里面的应用

另外,使用-p 映射默认端口8080到host的端口作为haproxy访问的入口


HAproxy设置:

root@ubuntu:~# cat /usr/local/haproxy/haproxy.cfg

#全局配置

global

#设置日志

log 127.0.0.1 local3 info

chroot /usr/local/haproxy

#用户与用户组

#user haproxy

#group haproxy

#守护进程启动

daemon

#最大连接数

maxconn 4000

#默认配置

defaults

log global

option dontlognull

timeout connect 5000

timeout client 50000

timeout server 50000

bind *:8088

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

stats uri /haproxy?stats

stats auth admin:admin

stats admin if TRUE

#负载均衡方式

#source 根据请求源IP

#static-rr 根据权重

#leastconn 最少连接者先处理

#uri 根据请求的uri

#url_param 根据请求的url参数

#rdp-cookie 据据cookie(name)来锁定并哈希每一次请求

#hdr(name) 根据HTTP请求头来锁定每一次HTTP请求

#roundrobin 轮询方式

balance roundrobin

#设置健康检查页面

#传递客户端真实IP

option forwardfor header X-Forwarded-For

#inter 10000 健康检查时间间隔2秒

#rise 3 检测多少次才认为是正常的

#fall 3 失败多少次才认为是不可用的

# weight 30 权重

# 需要转发的ip及端口,因为容器在本地,所以用127.0.0.1也可以

server node1 127.0.0.1:18080 check inter 10000 rise 3 fall 3 weight 30

server node2 127.0.0.1:28080 check inter 10000 rise 3 fall 3 weight 30

userlist L1

group G1 users tiger,scott

group G2 users xdb,scott

user tiger insecure-password tiger

user scott insecure-password scott

user xdb insecure-password xdb

耶,页面出来了

。。。页面出来了,但是怎么知道LB和HA有没有生效呢

打开统计页面试试:

如图,看到alive的node 有两个

二话不说,部署一个probe到tomcat试试:

对的,我就是部署这个:

留意头顶上的机器名。。。。

tomcat_01/tomcat_02之间自动切换,现在证明LB工作得很好

看看HA 怎样:

关掉一个tomcat试试?

关掉了TOMCAT_02 HAproxy已经探测到有一台机器挂了

多次刷新都没有出现错误,但是只能显示tomcat_01的页面,failover成功,这就是我们想要的

下一步,测试auto recovery

把tomcat重新启动:

又把container起来 心跳探测成功但是未能确认稳定的状态,显示黄色

累计足够次数的心跳检测,恢复到绿色正常状态

再次刷新probe:

只能告诉大家又能正常访问,流向轮流派发到两个tomcat了,懒得截图了

结论:Auto Recovery成功

显示全文