2017-03-14 1 views
0

도커 버전 거부 : 버전 17.03.0-CE-MAC2를 (15654)
OS : 맥 OS 시에라Keepalived/Haproxy 고정 표시기-작성 연결

내가 설정에 docker- 사용하여 HA 환경을 시도하고있다 짓다. 토폴로지가 어떻게 생겼는지에 대한 간단한 개요는 적어도 두 개의 keepalived 및 haproxy 인스턴스가 실행되며 haproxy가 여러 서버 앞에 표시됩니다. 그러나이 게시에서는 단순화를 위해 keepalived, haproxy 및 server 인스턴스를 하나만 참조했습니다.

현재 문제는 내가 keepalived에 할당 한 가상 IP 주소로 트래픽을 보낼 수 없다는 것입니다. 내 도커 작성 파일의 테스트 목적으로 VIP를 사용하여 통신을 시도하는 클라이언트가 있는데 연결이 거부되었습니다.

dial tcp 192.168.99.120:80: getsockopt: connection refused 

그러나 직접적으로 haproxy에 연락하면 연결 문제가 없습니다. 또한, 나는 호스트에서 직접 haproxy와 통신 할 수 있지만 keepalived하지 않습니다.

나는 네트워크가 도커에서 어떻게 작동하는지와 관련이 있다고 느낀다. 그러나 나는 도커를 사용하는 것에 매우 익숙하며 문제를 추적 할 수 없었다. 어떤 도움이라도 대단히 감사 할 것입니다.

내 구성 파일은 모두 아래에 포함되어 있습니다.


고정 표시기-compose.yml :

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:[email protected]" 

haproxy.cfg

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

0
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가 있습니다

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 

답변

0

나는 그것이 실제로 도커 컨테이너를 실행하는 데 내부적으로 VM을 사용하기 때문에이 이제까지 Mac 용 부두 노동자와 함께 작동합니다 생각하지 않습니다. 이 은 브리지 네트워킹이 아닌 호스트 네트워킹을 사용하려고 시도 할 경우 기본 Docker 지원이있는 시스템에서으로 작동해야합니다.

나의 제안은 도커 떼 모드 (안 독립형 도커 떼) 또는 두 서비스를 확장하고 하나의 주소를 통해 그들에 걸쳐로드 밸런싱을 제공하는 메커니즘을 제공는 Kubernetes 중 하나를 보는 것