摘要:
一. 环境:在自己的k8s上新建了几个容器:[这块可以忽略...][root@master01 k8s]# kubectl get pod&...
一. 环境:
在自己的k8s上新建了几个容器:[这块可以忽略...]
[root@master01 k8s]# kubectl get pod -o wide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES haproxy-01 1/1 Running 0 14h 10.2.77.4 192.168.10.95 <none> <none> tomcat-01 1/1 Running 0 17h 10.2.77.3 192.168.10.95 <none> <none> tomcat-02 1/1 Running 0 16h 10.2.77.5 192.168.10.95 <none> <none> [root@master01 k8s]# cat tomcat.yaml apiVersion: v1 kind: Pod metadata: name: tomcat-01 spec: containers: - name: tomcat-01 securityContext: privileged: true image: 192.168.10.103/public/sshd-base:latest imagePullPolicy: Always imagePullSecrets: - name: mysecret
haproxy:10.2.77.4
tomcat01:10.2.77.3
tomcat02:10.2.77.5
OS:centos7u6
二. 后端服务部署
服务基于Tomcat的动态jsp请求,tomcat基于java,需要先把java环境部署,具体步骤就不介绍了。
1. JAVA环境:
# /etc/profile:中加入环境变量 export JAVA_HOME=/usr/local/jdk export PATH=$JAVA_HOME/bin:$PATH [root@tomcat-01 ~]# java -version java version "1.8.0_221" Java(TM) SE Runtime Environment (build 1.8.0_221-b11) Java HotSpot(TM) 64-Bit Server VM (build 25.221-b11, mixed mode)
2. tomcat安装:
使用二进制方式安装:
wget http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v8.5.43/bin/apache-tomcat-8.5.43.tar.gz
tar zxf apache-tomcat-8.5.43.tar.gz
mv apache-tomcat-8.5.43 /usr/local/src/
ln -s /usr/local/src/apache-tomcat-8.5.43 /usr/local/tomcat
启动:
cd /usr/local/tomcat/bin
./startup.sh
测试:
curl 127.0.0.1:8080
返回结果正常,另外一台同样的安装即可。为了方便测试,修改默认首页index.jsp为"tomcat01"和"tomcat02"
三. haproxy安装配置
yum install -y haproxy
[root@haproxy-01 haproxy]# cat haproxy.cfg global maxconn 30000 user haproxy pidfile /var/run/haproxy.pid log 127.0.0.1 local0 info log 127.0.0.1 local1 warning defaults mode http log global option http-keep-alive option forwardfor option httplog timeout connect 5000ms timeout client 10000ms timeout server 50000ms timeout http-request 20000ms option httpchk GET /healthCheck.html frontend http-in bind *:80 maxconn 30000 default_backend bk_tomcat backend bk_tomcat balance roundrobin cookie c_serverid insert indirect nocache server tomcat01 10.2.77.3:8080 check cookie tomcat01 server tomcat02 10.2.77.5:8080 check cookie tomcat02 listen stats bind *:9001 stats refresh 30s stats uri /stats stats realm HAProxy\ Stats stats auth admin:admin
默认请求:/index.jsp,后文将省略index.jsp。
第一个请求:请求头没有任何额外的信息,haproxy检测到请求头没有对应的cookie,所以响应头被haproxy插入了设定好的cookie:c_serverid=tomcat01,说明选择的backend server是tomcat01,后续请求都将转发到此server
第二个请求:可以看到请求头cookie中已经附上了前面请求中haproxy插入的信息,haproxy识别后将请求转发到标记的后端服务器,这样就能一直保持转发到相同服务器
后续请求都是转发到相同服务器了。注意到整个过程中Tomcat的创建的JSESSIONID也没有变过。
用curl来测试一下:
虽然haproxy在响应头里插入了cookie,但是由于curl都是一次性请求连接就断开,默认也没有附上cookie,所以是轮询的。
下面在请求中带上cookie试试:
可以看到带上cookie信息后转发到了固定的后端服务器,多请求测试一下:
可以看到都是转发到相同的后端了。
发表评论