rancher-server容器HA部署

目标:

部署rancher-server容器haproxy(单节点部署)

准备:

mairadb
haproxy
docker.io/rancher/server容器

过程:

创建server服务高可用集群:
[root@server ~]# docker run -d --restart=unless-stopped -p 8080:8080 -p 9345:9345 docker.io/ranche r/server:latest --db-host 192.168.1.102 --db-port 3306 --db-user cattle --db-pass cattle --db-name cattle --adv ertise-address 192.168.1.102
[root@server ~]# docker run -d --restart=unless-stopped -p 8081:8080 -p 9346:9345 docker.io/rancher/server:latest --db-host 192.168.1.102 --db-port 3306 --db-user cattle --db-pass cattle --db-name cattle --advertise-address 192.168.1.102 --advertise-http-port 8081
重命名容器:
[root@server ~]# docker rename brave_poitras server0
[root@server ~]# docker rename compassionate_shannon server1
[root@server ~]# docker ps -a
CONTAINER ID        IMAGE                             COMMAND                  CREATED             STATUS              PORTS                                                      NAMES
5930b51da390        docker.io/rancher/server:latest   "/usr/bin/entry --..."   4 minutes ago       Up 38 seconds       3306/tcp, 0.0.0.0:8081->8080/tcp, 0.0.0.0:9346->9345/tcp   server1
ec43c986dca7        docker.io/rancher/server:latest   "/usr/bin/entry --..."   12 minutes ago      Up 12 minutes       0.0.0.0:8080->8080/tcp, 3306/tcp, 0.0.0.0:9345->9345/tcp   server0
访问容器:

访问server:8080或者8081端口(看到的是相同的内容)


17509553-39346094bc4b4a5a.JPG
server.JPG
安装haproxy服务:
[root@server ~]# yum -y install haproxy

配置文件为:

[root@server ~]# cat /etc/haproxy/haproxy.cfg                                                                  
global
  maxconn 4096
  ssl-server-verify none

defaults
  mode http
  balance roundrobin
  option redispatch
  option forwardfor

 timeout connect 5s
  timeout queue 5s
  timeout client 36000s
  timeout server 36000s

frontend http-in
  mode tcp
  #bind *:443 ssl crt /etc/haproxy/certificate.pem
  bind *:80 
#监听的端口,就是haproxy的端口
  default_backend rancher_servers

 acl is_websocket hdr(Upgrade) -i WebSocket
  acl is_websocket hdr_beg(Host) -i ws
  use_backend rancher_servers if is_websocket

backend rancher_servers
  server websrv1 192.168.1.102:8080 weight 1 maxconn 1024
  server websrv2 192.168.1.102:8081 weight 1 maxconn 1024

启动haproxy服务:
好像有警告,没关系先不管

[root@server ~]# haproxy -f /etc/haproxy/haproxy.cfg
[WARNING] 168/055051 (32989) : config : 'option forwardfor' ignored for frontend 'http-in' as it requires HTTP mode.

访问haproxy服务:
地址为server:80,访问到的是rancher-server服务

17509553-860df9576316668e.JPG
haproxy80.JPG

测试haproxy效果:

当高可用集群中至少有一个节点还在运行,服务就不会停止。
可以分别关掉一个和最后一个服务后,查看效果。

当关闭最后一个服务时,再次访问80端口就会有一下提示:

[root@server ~]# curl server:80
<html><body><h1>503 Service Unavailable</h1>
No server is available to handle this request.
</body></html>

过程中遇到的问题:

[root@server ~]# docker run -d --restart=unless-stopped -p 8080:8080 rancher/server
6c60e9070c1db870a460474d9d272f3008c74b2508864a42215935f40ec69766
/usr/bin/docker-current: Error response from daemon: driver failed programming external connectivity on endpoint loving_davinci (df72d5fbab68e843477ad9e22c24d546a06b71d422c7232c6e99a12fb5dd9168):  (iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 8080 -j DNAT --to-destination 172.17.0.2:8080 ! -i docker0: iptables: No chain/target/match by that name.
 (exit status 1)).
[root@server ~]# docker run -d --restart=unless-stopped -p 8080:8080 -p 9345:9345 docker.io/rancher/server:late
st --db-host 192.168.1.102 --db-port 3306 --db-user cattle --db-pass cattle --db-name cattle --advertise-addres
s 192.168.1.102
b87ac83f63ed87772f7da779832ea16f2b767e1fdf2eca7793443afe87b57d13
/usr/bin/docker-current: Error response from daemon: driver failed programming external connectivity on endpoint confident_davinci (284fa92ff1667122cbeb98ef23ad3123c2270f587b7e412f5e143a757a29f056):  (iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 9345 -j DNAT --to-destination 172.17.0.2:9345 ! -i docker0: iptables: No chain/target/match by that name.
 (exit status 1)).
[root@server ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eno16777728: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:0a:0c:9e brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.102/24 brd 192.168.1.255 scope global dynamic eno16777728
       valid_lft 5967sec preferred_lft 5967sec
    inet6 fe80::20c:29ff:fe0a:c9e/64 scope link
       valid_lft forever preferred_lft forever
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN
    link/ether 02:42:78:46:9c:0d brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 scope global docker0
       valid_lft forever preferred_lft forever

原因:
docker0设备状态为DOWN。
解决方法:
重启docker服务或者手动启动设备docker0。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值