고정 표시기 - 클러스터 rabbitmq를 구축

고정 표시기 - 클러스터 rabbitmq를 구축


(1) 우선, 인상 미러 rabbitmq

우리는 예를 들어, 3.8.2 버전이

docker pull rabbitmq:3.8.2-management

2, 예 3 다음은 rabbitmq을 실행


# 运行镜像,集群模式
docker run \
  --name rabbitmq-1 \
  --hostname=rabbitmq-1 \
  --restart=always \
  -d \
  -e RABBITMQ_DEFAULT_USER=rabbitmq \
  -e RABBITMQ_DEFAULT_PASS=OnlinezuozuoCreated.rabbitmq.test.password \
  -e RABBITMQ_ERLANG_COOKIE='oNYE40jp2YbuXfWKd9vFu1VZiic8' \
  -v /etc/docker/volume/rabbitmqcluster/rabbitmq-1:/var/lib/rabbitmq \
  -p 52001:5672 \
  -p 52002:15672 \
  rabbitmq:3.8.2-management

docker run \
  --name rabbitmq-2 \
  --hostname=rabbitmq-2 \
  --restart=always \
  --link rabbitmq-1:rabbitmq-1 \
  -d \
  -e RABBITMQ_DEFAULT_USER=rabbitmq \
  -e RABBITMQ_DEFAULT_PASS=OnlinezuozuoCreated.rabbitmq.test.password \
  -e RABBITMQ_ERLANG_COOKIE='oNYE40jp2YbuXfWKd9vFu1VZiic8' \
  -v /etc/docker/volume/rabbitmqcluster/rabbitmq-2:/var/lib/rabbitmq \
  -p 52301:5672 \
  -p 52302:15672 \
  rabbitmq:3.8.2-management

docker run \
  --name rabbitmq-3 \
  --hostname=rabbitmq-3 \
  --restart=always \
  --link rabbitmq-1:rabbitmq-1 \
  --link rabbitmq-2:rabbitmq-2 \
  -d \
  -e RABBITMQ_DEFAULT_USER=rabbitmq \
  -e RABBITMQ_DEFAULT_PASS=OnlinezuozuoCreated.rabbitmq.test.password \
  -e RABBITMQ_ERLANG_COOKIE='oNYE40jp2YbuXfWKd9vFu1VZiic8' \
  -v /etc/docker/volume/rabbitmqcluster/rabbitmq-3:/var/lib/rabbitmq \
  -p 52501:5672 \
  -p 52502:15672 \
  rabbitmq:3.8.2-management


RABBITMQ_ERLANG_COOKIE클러스터 연결 문자열 통신 rabbitmq 클러스터가 일치해야합니다

--link rabbitmq-1:rabbitmq-1 \우리는 그들이 통신 할 수 있도록하는 것이, 예 2 세에 의해 연결되어

3, 우리는 클러스터를 구축하고, 동기화 시간대

하나 다음 명령 한 첫 번째 인스턴스에 및 실행

docker exec -it rabbitmq-1 bash
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl start_app
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime &&
  echo "Asia/Shanghai" >/etc/timezone
date "+%Y-%m-%d %H:%M:%S" ## 显示设置后,新的系统时间
exit


하나 숫자 두 인스턴스 하나를 입력하고 다음 명령을 실행

docker exec -it rabbitmq-2 bash
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster --ram rabbit@rabbitmq-1
rabbitmqctl start_app
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime &&
  echo "Asia/Shanghai" >/etc/timezone
date "+%Y-%m-%d %H:%M:%S" ## 显示设置后,新的系统时间
exit

실시 예 III 입력과의 명령을 실행할

docker exec -it rabbitmq-3 bash
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster --ram rabbit@rabbitmq-1
rabbitmqctl start_app
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime &&
  echo "Asia/Shanghai" >/etc/timezone
date "+%Y-%m-%d %H:%M:%S" ## 显示设置后,新的系统时间
exit

네, 어떻게 용기를 삭제하려면

당신이 시작하지 못했습니다 만남 또는 포트 직업, 등, 우리가 용기를 중지하고 컨테이너를 제거 할 수 있습니다, 다시 생성

docker container stop rabbitmq-1
docker container rm rabbitmq-1

docker container stop rabbitmq-2
docker container rm rabbitmq-2

docker container stop rabbitmq-3
docker container rm rabbitmq-3

(5)는, 동작 상태 검출하는 방화벽 포트 제어 포트를 열거 나 출시

액세스하여

에 http : // localhost를 : 52,101 /

에 http : // localhost를 : 52,301 /

에 http : // localhost를 : 52,501 /

스크립트에 정의 된 위의 정상 착륙, 계정의 계좌 번호와 비밀번호를 확인

그리고 클러스터 상태가 양호한를 참조하십시오.

6 Nginx에 의해로드 밸런싱

nginx를 부하 관리 페이지를 높이기 위해 균형

upstream rabbitmq {   
  	 server localhost:52002 weight=1 max_fails=2 fail_timeout=10s;   
	 server localhost:52302 weight=1 max_fails=2 fail_timeout=10s;
	 server localhost:52502 weight=1 max_fails=2 fail_timeout=10s;
}

location /
{
    proxy_pass http://rabbitmq;
    proxy_set_header Host rabbitmq;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header REMOTE-HOST $remote_addr;
    
    add_header X-Cache $upstream_cache_status;
    
    #Set Nginx Cache
    
    	add_header Cache-Control no-cache;
    expires 12h;
}

이러한 방법으로, 우리는, 부하는 프록시 액세스를 반대로 nginx를 스루 액세스를 콘솔의 균형을 수


연결 포트로드 밸런싱을 증가 Nginx에

stream{

upstream rabbitmq {   
  	 server localhost:52001 weight=1 max_fails=2 fail_timeout=10s;   
	 server localhost:52301 weight=1 max_fails=2 fail_timeout=10s;
	 server localhost:52501 weight=1 max_fails=2 fail_timeout=10s;
}


server{
    listen 52701;
    proxy_connect_timeout 20s;
	proxy_pass rabbitmq;
}

}

이러한 방법으로, 우리는 nginx를 리버스 프록시를 통해 액세스 데이터 연결을로드 밸런싱을 수행 할 수 있습니다

게시 된 447 개 원래 기사 · 원 찬양 1345 · 조회수 2,360,000 +

추천

출처blog.csdn.net/qq_15071263/article/details/104538722