首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Keepalived/Haproxy码头-合成连接被拒绝

Keepalived/Haproxy码头-合成连接被拒绝
EN

Stack Overflow用户
提问于 2017-03-14 19:18:27
回答 1查看 1.6K关注 0票数 1

码头版本:版本17.03.0-ce-mac2 (15654)

OS: macOS Sierra

我正在尝试建立一个HA环境使用坞-合成。关于拓扑可能是什么样子的快速概述是,我将至少有两个保持和have运行的实例,haproxy将出现在多个服务器的前面。但是,在这篇文章中,我只引用了一个保存实例、only和服务器来进行简化。

我现在遇到的问题是,我无法将流量定向到我分配给保存的虚拟IP地址。出于测试目的,在我的坞撰写文件中,我有一个客户端尝试使用VIP进行通信,这会导致连接拒绝错误。

代码语言:javascript
复制
dial tcp 192.168.99.120:80: getsockopt: connection refused

但是,如果我直接接触到haproxy,就不会出现连接问题。此外,我可以直接从主机与haproxy通信,但不能保持。

我觉得这与网络如何在码头工作有关,但我对使用码头非常陌生,一直无法追踪这个问题。任何帮助都将不胜感激。

我的配置文件都包含在下面。

docker-compose.yml:

代码语言:javascript
复制
version: '2'

services:
keepalived1:
  image: neoassist/docker-keepalived:latest
  container_name: keepalived1
  volumes:
    - "./keepalived.conf:/etc/keepalived/keepalived.conf"
  environment:
    - VIRTUAL_IP=192.168.99.120
    - VIRTUAL_MASK=24
    - VRID=1
    - CHECK_IP=any
    - CHECK_PORT=80
    - INTERFACE=eth0
  entrypoint: sh -c 'sleep 4;/usr/bin/keepalived.sh'
  network_mode: "host"
  cap_drop:
    - NET_ADMIN
  privileged: true

haproxy1:
  image: haproxy:latest
  container_name: haproxy1
  ports:
    - 7054:7054
  volumes:
    - "./haproxy1.cfg:/usr/local/etc/haproxy/haproxy.cfg"
  environment:
    - EXPOSE=7054
  links:
    - fabric-ca-server1:fabric-ca-server1

fabric-ca-server1:
  image: hyperledger/fabric-ca
  container_name: fabric-ca-server1
  ports:
    - 7051:7054
  environment:
    - FABRIC_CA_HOME=/etc/hyperledger/fabric-ca-server
  volumes:
    - "./fabric-ca-server:/etc/hyperledger/fabric-ca-server"
  command: sh -c "fabric-ca-server start -d -b admin:adminpw"

admin-client:
  image: hyperledger/fabric-ca
  container_name: admin-client
  network_mode: "host"
  command: sh -c "sleep 14;fabric-ca-client enroll -d -u http://admin:adminpw@192.168.99.120"

haproxy.cfg

代码语言:javascript
复制
global
  maxconn 4096

defaults
  mode http
  maxconn 2000
  timeout connect 5000
  timeout client 50000
  timeout server 50000

frontend server
  bind *:7054
  mode tcp
  default_backend server_cluster

backend server_cluster
  balance source
  mode tcp
  option tcpka
  server server1 fabric-ca-server1:7054

keepalived.conf

代码语言:javascript
复制
vrrp_script haproxy {
 script "pidof haproxy"
 interval 2
 weight 2
}

vrrp_instance haproxy_1 {
 virtual_router_id 1
 advert_int 1
 interface eth0
 nopreempt
 state BACKUP
 virtual_ipaddress {
  192.168.99.120/24 dev eth0
 }

 track_script {
  haproxy
 }
}

来自我的mac的ifconfig有:

代码语言:javascript
复制
vboxnet0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
ether 0a:00:27:00:00:00 
inet 192.168.99.1 netmask 0xffffff00 broadcast 192.168.99.255
EN

回答 1

Stack Overflow用户

发布于 2017-03-14 20:23:26

我不认为这将与Docker一起工作,因为它实际上使用隐藏的VM来运行您的Docker容器。如果您尝试使用主机网络而不是桥接网络,这应该可以在具有本机Docker支持的系统上工作。

我的建议是研究码头群模式(而不是独立的码头群)或库伯奈特模式,它们都提供扩展服务的机制,并通过一个地址提供跨服务的负载平衡。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42794725

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档