统一配制中心 Config
/{name}-{profiles}.yml
/{lable}/{name}-{profiles}.yml
label 分支(bracndh)
name 服务名
profiles 环境
order-dev(XXX).yml启动时会与order.yml合并下发,可以将通用的配制信息写入order.yml,差异的写在不同的环境文件中,
将eureka的注册地址写在代码配制文件中
SERVER
““/{name}-{profiles}.yml
/{lable}/{name}-{profiles}.yml
label 分支(bracndh)
name 服务名
profiles 环境
order-dev(XXX).yml启动时会与order.yml合并下发,可以将通用的配制信息写入order.yml,差异的写在不同的环境文件中,
将eureka的注册地址写在代码配制文件中
SERVER
““Docker
官网 https://www.docker.com/
安装 https://docs.docker.com/v17.09/engine/installation/linux/docker-ce/ubuntu/#docker-ee-customers
镜像市场 http://hub.docker.com
教程 https://www.runoob.com/docker/docker-tutorial.html
国内高速下载Docker 以及 docker-compose 地址
http://get.daocloud.io
https://blog.csdn.net/nklinsirui/article/details/80610058
Aliyun Ubuntu 14.04/16.04(使用 apt-get 进行安装)
# step 1: 安装必要的一些系统工具
sudo apt-get update
sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common
# step 2: 安装GPG证书
curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
# Step 3: 写入软件源信息
sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
# Step 4: 更新并安装Docker-CE
sudo apt-get -y update
sudo apt-get -y install docker-ce
# 安装指定版本的Docker-CE:
# Step 1: 查找Docker-CE的版本:
# apt-cache madison docker-ce
# docker-ce | 17.03.1ce-0ubuntu-xenial | http://mirrors.aliyun.com/docker-ce/linux/ubuntu xenial/stable amd64 Packages# docker-ce | 17.03.0ce-0ubuntu-xenial | http://mirrors.aliyun.com/docker-ce/linux/ubuntu xenial/stable amd64 Packages
# Step 2: 安装指定版本的Docker-CE: (VERSION例如上面的17.03.1ce-0ubuntu-xenial)
# sudo apt-get -y install docker-ce=[VERSION]
Created symlink /etc/systemd/system/multi-user.target.wants/docker.service → /lib/systemd/system/docker.service.
Created symlink /etc/systemd/system/sockets.target.wants/docker.socket → /lib/systemd/system/docker.socket.
#使用快速安装ubuntu 18
sudo apt install docker.io
增加配制:自己的仓库地址,镜像仓库地址X需更改,使用systemd与K8s同样配制
增加配制:3自己的仓库地址,镜像仓库地址X需更改,使用systemd与K8s同样配制 /etc/docker/daemon.json
{
"insecure-registries":["harbor.com","192.168.88.128:5000"],
"registry-mirrors":["https://cuzn52fX.mirror.aliyuncs.com","https://reg-mirror.qiniu.com","https://registry.docker-cn.com"],
"exec-opts": ["native.cgroupdriver=systemd"],
"storage-driver": "overlay2",
"storage-opts": ["overlay2.override_kernel_check=true"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m",
"max-file": "3"
},
"max-concurrent-downloads": 5,
"max-concurrent-uploads": 5
}
# 将Docker加入开启启动
$ sudo systemctl enable docker
# 启动Docker
$ sudo systemctl start docker
systemctl daemon-reload 重新加载
systemctl restart docker 重启docker
建立Docker用户组
默认情况下,docker命令会使用Unix Socket与Docker引擎通信,只有root用户和docker组的用户才可以访问Docker引擎的Unix Socket。出于安全考虑,一般不会直接使用root用户,所以需要先建立docker组,并将当前用户添加到docker组中。
$ sudo groupadd docker
$ sudo usermod -aG docker $USER
docker info
docker version
docker ps -a
docker images
docker exec -it container-id /bin/bash exit
docker logs -f container-id
docker stop -f container-id
docker rmi Image-file
docker rm container-id
docker login
bocker build -t coustName:tag .
bocker build -t coustName:tag -f path
docker tag mysql:5.6 myreg/mysql:1.0
docker push myreg/mysql:1.0
Dockerfile
常用其它镜像地址:
七牛 quay-mirror.qiniu.com
卸载旧版本:
sudo systemctl stop docker
sudo apt-get purge docker-ce
或
sudo apt-get remove docker docker-ce docker-io
RabbitMQ
https://www.rabbitmq.com/download.html
docker run -itd --rm --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:3-management
sudo docker run -d --hostname rabbitmq --name rabbitmq -p 5672:5672 -p 15672:15672 -e RABBITMQ_DEFAULT_USER=user -e RABBITMQ_DEFAULT_PASS=password --restart always harbor.com/public/rabbitmq:3-management
1883 是mqtt tcp协议默认端口
4369 EPMD默认端口号
5672 是服务的端口
15672 是管理界面的端口
15674 是web_stomp ws协议默认端口
15675 是web_mqtt ws协议默认端口
25672 用于节点间和CLI工具通信(Erlang分发服务器端口)
docker run -p 1883:1883 -p 4369:4369 -p 5671:5671 -p 5672:5672 -p 8883:8883 -p 15672:15672 -p 25672:25672 -p 15675:15675 -d cyrilix/rabbitmq-mqtt
sudo docker run -d --hostname rabbitmq --name rabbitmq -p 5672:5672 -p 15672:15672 -p 1883:1883 -p 15674:15674 -p 15675:15675 -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=admin --restart always rabbitmq:3-management
docker exec rabbitmq rabbitmq-plugins list
docker exec rabbitmq rabbitmq-plugins enable rabbitmq_mqtt
docker exec rabbitmq rabbitmq-plugins enable rabbitmq_web_mqtt
docker exec rabbitmq rabbitmq-plugins enable rabbitmq_web_stomp
docker exec rabbitmq rabbitmq-plugins enable rabbitmq_web_stomp_examples
启用 HTTP 后台认证需要使用 rabbitmq_auth_backend_http 插件,同时该插件还推荐配合 rabbitmq_auth_backend_cache 通过缓存减轻授权认证服务器压力。
---
docker-compose.yml
version: '3'
services:
rabbitmq:
image: rabbitmq:management
container_name: rabbitmq
restart: always
ports:
- 5672:5672
- 15672:15672
- 1883:1883
- 15675:15675
environment:
RABBITMQ_DEFAULT_USER: admin
RABBITMQ_DEFAULT_PASS: admin
volumes:
- ~/rabbitmq/lib:/var/lib/rabbitmq
- ~/rabbitmq/log:/var/log
docker exec -it rabbitmq bin/bash
rabbitmq-plugins enable rabbitmq_mqtt
rabbitmq-plugins enable rabbitmq_web_mqtt
docker-compose restart
docker-compose -f /home/zhu/rabbitmq/docker-compose.yml up -d
通过后台管理插件我们可以动态监控mq的流量,创建用户,队列等。
创建目录
mkdir /etc/rabbitmq
启用插件
/usr/lib/rabbitmq/bin/rabbitmq-plugins enable rabbitmq_management
其会在/etc/rabbitmq目录下创建一个enabled_plugins文件,这是后台管理的配置文件。
开启远程访问
rabbitmq的网页管理的端口是15672,如果你是远程操作服务器,输入http://ip:15672,发现连接不上,因为服务器防火墙不允许这个端口远程访问;
###将mq的tcp监听端口和网页管理端口都设置成允许远程访问
firewall-cmd –permanent –add-port=15672/tcp
firewall-cmd –permanent –add-port=5672/tcp
systemctl restart firewalld.service
管理界面介绍
###输入用户名密码登录后进入主界面
Overview:用来显示流量,端口,节点等信息,以及修改配置文件;
Connections:显示所有的TCP连接;
channels:显示所有的信道连接;
exchanges:显示所有的交换机以及创建删除等;
queues:显示所有的队列以及创建删除等;
admins:显示所有的用户以及用户管理;
用户设置
rabbitmq有一个默认的用户名和密码,guest和guest,但为了安全考虑,该用户名和密码只允许本地访问,如果是远程操作的话,需要创建新的用户名和密码;
###root权限
rabbitmqctl add_user username passwd //添加用户,后面两个参数分别是用户名和密码
rabbitmqctl set_permissions -p / username “.” “.” “.*” //添加权限
rabbitmqctl set_user_tags username administrator //修改用户角色,将用户设为管理员
注意:创建的新用户默认角色为空。
用户的角色说明
management:用户可以访问管理插件
policymaker:用户可以访问管理插件,并管理他们有权访问的vhost的策略和参数。
monitoring:用户可以访问管理插件,查看所有连接和通道以及与节点相关的信息。
administrator:用户可以做任何监视可以做的事情,管理用户,vhost和权限,关闭其他用户的连接,并管理所有vhost的政策和参数。
使用添加的账户远程访问后台管理站点,将原来的账号guest删除;
用户管理命令汇总
新建用户:rabbitmqctl add_user username passwd
删除用户:rabbitmqctl delete_user username
改密码: rabbimqctl change_password {username} {newpassword}
设置用户角色:rabbitmqctl set_user_tags {username} {tag …}
rabbitmqctl set_permissions -p / username “.” “.” “.*” //添加权限
权限说明:
rabbitmqctl set_permissions [-pvhostpath] {user} {conf} {write} {read}
Vhostpath:虚拟主机,表示该用户可以访问那台虚拟主机;
user:用户名。
Conf:一个正则表达式match哪些配置资源能够被该用户访问。
Write:一个正则表达式match哪些配置资源能够被该用户设置。
Read:一个正则表达式match哪些配置资源能够被该用户访问。
虚拟主机
默认的用户和队列都是在/虚拟机下。
创建一个虚拟主机
rabbitmqctl add_vhost vhost_name
删除一个虚拟主机
rabbitmqctl delete_vhost vhost_name
常用文件路径
/usr/local/rabbitmq_server/var/log/rabbitmq/rabbit@tms.log:记录rabbitmq运行日常的日志
/usr/local/rabbitmq_server/var/log/rabbitmq/rabbit@tms-sasl.log:rabbitmq的崩溃报告
/usr/local/rabbitmq_server/etc/rabbitmq/rabbitmq.config:rabbitmq的配置文件
/usr/local/rabbitmq_server/var/lib/rabbitmq/mnesia/rabbit@tms:rabbit消息持久化文件
注意:
如果相应路径的文件不存在就自己创建,如果是使用apt安装或yum安装那么这些文件夹都被自动创建好了。
RabbitMQ常用的交换器类型有direct、topic、fanout、headers四种。
1. Direct Exchange
该类型的交换器将所有发送到该交换器的消息被转发到RoutingKey指定的队列中,也就是说路由到BindingKey和RoutingKey完全匹配的队列中。
1. Topic Exchange
该类型的交换器将所有发送到Topic Exchange的消息被转发到所有RoutingKey中指定的Topic的队列上面。
Exchange将RoutingKey和某Topic进行模糊匹配,其中“”用来匹配一个词,“#”用于匹配一个或者多个词。
1. Fanout Exchange
该类型不处理路由键,会把所有发送到交换器的消息路由到所有绑定的队列中。优点是转发消息最快,性能最好。
1. Headers Exchange
该类型的交换器不依赖路由规则来路由消息,而是根据消息内容中的headers属性进行匹配。headers类型交换器性能差,在实际中并不常用。