Docker swarm结合Openresty部署rabbitmq集群 (2)

  -p 为将容器的端口暴露到宿主机的端口上,这样可以通过宿主机也就是服务器的端口访问到容器对应的端口,前方前为宿主机端口,后方为容器端口。其中5672为amqp通信端口,15672为管理界面端口,12345为stomp通信端口。

  --mount 为将容器内的目录映射到宿主机上(/var/lib/rabbitmq/ 保存了队列与交换机等的信息,而且保存了持久化的队列里的消息),这样当容器出现问题时,启动新容器时由于已经挂载到了宿主机上持久化,关键信息可以不丢失,新容器相当于和旧容器一样。前方为容器,后方为宿主机目录。

  --constraint 为创建service时将service指定在某台机器上创建,本次使用的是通过lable指定,在之前我已经对这三台服务器进行了label指定。

  -e 为指定容器内的环境变量,比如其中的    "RABBITMQ_ERLANG_COOKIE=thisissecretkey"

 

       3.创建rabbitmq slave 队列

  命令(slave):sudo docker service create --name stomp-rabbitmq-slave1 --hostname="stomp-rabbitmq-slave1" --network rabbitmq-network -p 5773:5672 -p 15773:15672 -p 23456:12345 --mount type=bind,target=http://www.likecs.com/var/lib/rabbitmq/,source=http://www.likecs.com/home/agent/rabmq/ --constraint node.labels.rabbitmq==slave1 -e RABBITMQ_CLUSTER_NODES='rabbit@rabbitmq-master' -e "AUTOCLUSTER_CLEANUP=true" -e "CLEANUP_WARN_ONLY=false" -e "RABBITMQ_ERLANG_COOKIE=thisissecretkey" stomp-rabbitmq:latest

        在执行完 sudo docker service create --name stomp-rabbitmq-slave1 后,其实就相当于启动了一个容器,可以通过 docker ps 看到,如果看不到,那说明服务启动失败,通过进程守护进入容器用到的 id 就是 此处看到的id

   (将分支1加入到集群),通过守护进程进入到容器内部执行

        (进入容器)命令:docker exec -it 36383eefcf87 /bin/sh

                                    docker exec -it  /bin/sh

  rabbitmqctl stop_app   rabbitmqctl join_cluster rabbit@stomp-rabbitmq-master   rabbitmqctl start_app


 4.创建Openresty(nginx+lua)

   docker build -t openresty-product:0.0.1 .

        命令:docker service create  --name openresty-product-service --mode global -p 8080:80 --mount type=bind,target=http://www.likecs.com/var/log/nginx/,source=http://www.likecs.com/home/agent/openresty-file/var/log/nginx --mount type=bind,target=http://www.likecs.com/opt/,source=http://www.likecs.com/home/agent/openresty-file/openrestyFile --mount type=bind,target=http://www.likecs.com/etc/nginx/conf.d,source=http://www.likecs.com/home/agent/openresty-file/etc/nginx/conf.d --mount type=bind,target=http://www.likecs.com/usr/local/openresty/nginx/conf,source=http://www.likecs.com/home/agent/openresty-file/usr/local/openresty/nginx/conf openresty-product:0.0.1 

 

        用于外网访问下载数据文件

        命令:docker service create  --name openresty-file-server --constraint node.labels.rabbitmq==master -p 80:80 --mount type=bind,target=http://www.likecs.com/var/log/nginx/,source=http://www.likecs.com/home/agent/finalDataFile/var/log/nginx --mount type=bind,target=http://www.likecs.com/opt/,source=http://www.likecs.com/home/agent/finalDataFile --mount type=bind,target=http://www.likecs.com/etc/nginx/conf.d,source=http://www.likecs.com/home/agent/finalDataFile/etc/nginx/conf.d openresty/openresty:xenial

 

        nginx 的相关配置,我们就不在此细说了,我可以给大家看个例子

       

server { listen 80; server_name localhost; #charset koi8-r; access_log /var/log/nginx/host.access.log main; location / { root /usr/local/openresty/nginx/html; index index.html index.htm; } location /hello { # root /usr/local/openresty/nginx/html; # index index.html index.htm; default_type 'text/html'; content_by_lua 'ngx.say("hello world")'; } location /file { proxy_pass http://192.168.7.201:8090/; access_log /var/log/nginx/file.access.log main; error_log /var/log/nginx/file.error.log; } location /dataagent/v1/test { # deny all; default_type 'text/html'; # lua_code_cache off; # content_by_lua 'ngx.say("xiaomi.qiangzhan.com access")'; access_log /var/log/nginx/chaoshen.access.log main; error_log /var/log/nginx/chaoshen.error.log; content_by_lua_file /opt/openresty-docker/openresty/lua-dataagent/chaoshen_yuenan.lua; } error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/local/openresty/nginx/html; } }

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zygfzf.html