部署基础设施集群
基于docker的es集群部署
docker的安装
参见: 请参考"docker安装指南"
docker-compose安装
以下所有命令需要在每台机器上执行
sudo curl -L "http://res.javamall.com.cn/docker-compose" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
搭建2个节点的es集群
我们先准备2台机器,假设ip如下:
主机名 | IP | |
---|---|---|
node1 | 192.168.2.217 | |
node2 | 192.168.2.190 |
其中域名要根据实际规划的域名进行配置,在此处设置secret_key的值需要记录下,所有部署完成后,需要在管理端进行保存
修改系统参数
vi /etc/sysctl.conf
加入:
vm.max_map_count=262144
然后:
sysctl -p
创建目录
mkdir -p /home/soft/elasticsearch/{config,data}
mkdir -p /home/soft/elasticsearch/plugins/ik/config
chmod -R 777 /home/soft/elasticsearch/
vi /home/soft/elasticsearch/plugins/ik/config/IKAnalyzer.cfg.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
<comment>IK Analyzer 扩展配置</comment>
<!--用户可以在这里配置远程扩展字典 -->
<entry key="remote_ext_dict">http://api.base.test.com/load-customwords?secret_key=secret_value</entry>
</properties>
elasticsearch.yml
vi /home/soft/elasticsearch/config/elasticsearch.yml
输入如下内容:
cluster.name: es-cluster
node.name: es-node190
network.bind_host: 0.0.0.0
network.publish_host: 192.168.2.190
http.port: 9200
transport.tcp.port: 9300
http.cors.enabled: true
http.cors.allow-origin: "*"
node.master: true
node.data: true
discovery.zen.ping.unicast.hosts: ["192.168.2.217","192.168.2.190"]
discovery.zen.minimum_master_nodes: 1
说明:
1、 network.publish_host 为本机节点 ip 2、 discovery.zen.ping.unicast.hosts 为所有集群内节点ip,多个逗号隔开
docker-compose.yml
vi /root/docker-compose.yml
输入如下内容:
version: '3'
services:
es: # 服务名称
image: registry.cn-beijing.aliyuncs.com/javashop-k8s-images/elasticsearch:6.2.2 # 使用的镜像
container_name: es # 容器名称
restart: always # 失败自动重启策略
environment:
- bootstrap.memory_lock=false
- "ES_JAVA_OPTS=-Xms512m -Xmx512m" # 设置内存
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- /home/soft/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
- /home/soft/elasticsearch/data:/usr/share/elasticsearch/data
- /home/soft/elasticsearch/plugins/ik/config/IKAnalyzer.cfg.xml:/usr/share/elasticsearch/plugins/ik/config/IKAnalyzer.cfg.xml
ports:
- 9200:9200 # http端口
- 9300:9300 # es节点直接交互的端口,非http
说明:
1、 network.publish_host 为本机节点 ip
2、 discovery.seed_hosts 为所有集群内节点ip,多个逗号隔开
3、 cluster.initial_master_nodes 为要选举为主节点的ip,多个逗号隔开
启动:
cd /root
docker-compose up -d
验证:
http://118.190.217.168:9200/_cat/nodes?v&pretty
基于docker的 Rabbit Mq集群搭建
目标
先实现2个节点的集群,再实现节点的扩容
搭建2个节点的mq集群
我们先准备2台机器,假设ip如下:
主机名 | IP | |
---|---|---|
node1 | 172.31.119.206 | |
node2 | 172.31.119.203 |
consul服务搭建
我们在node上建立consul服务:
docker run -d --rm -t -i --name=consul -p 8500:8500 consul
访问http://ip:8500/ 验证
分别在两台机器上执行如下操作
建立好mq相关目录
mkdir -p /opt/data/mqdata
mkdir -p /opt/config/mq
开启consul插件
vi /opt/config/mq/enabled_plugins
输入如下内容
[rabbitmq_management,rabbitmq_peer_discovery_consul,rabbitmq_delayed_message_exchange].
rabbitmq.conf
vi /opt/config/mq/rabbitmq.conf
输入如下内容:
cluster_formation.peer_discovery_backend = consul
cluster_formation.consul.host = 172.31.119.206
cluster_formation.consul.port = 8500
cluster_formation.consul.scheme = http
cluster_formation.consul.svc_addr_auto = true
cluster_formation.consul.svc_addr_use_nodename = false
cluster_formation.consul.svc = rabbitmq
loopback_users = none
注意修改 cluster_formation.consul.host 为consul服务实际所在ip
修改hosts文件
vi /etc/hosts
输入如下内容
172.31.119.207 mq02
172.31.119.206 mq01
以上内容是为了保证各个mq节点互相通信正常,请按您的实际情况配置此文件,这个文件将被映射到容器中
在两台机器上做好了上述准备后,启动mq。
启动mq
在node1机器上执行:
docker run -d --rm --hostname mq01 --network=host \
-v /opt/data/mqdata:/var/lib/rabbitmq \
-v /opt/config/mq:/etc/rabbitmq \
-e RABBITMQ_ERLANG_COOKIE='MY-SECRET-KEY' \
--name rabbit registry.cn-beijing.aliyuncs.com/javashop-k8s-images/rabbitmq:3.8.2.2-management-alpine
在node2机器上执行:
docker run -d --rm --hostname mq02 --network=host \
-v /opt/data/mqdata:/var/lib/rabbitmq \
-v /opt/config/mq:/etc/rabbitmq \
-e RABBITMQ_ERLANG_COOKIE='MY-SECRET-KEY' \
--name rabbit registry.cn-beijing.aliyuncs.com/javashop-k8s-images/rabbitmq:3.8.2.2-management-alpine
此时我们在consul上会看到启动的mq服务:
登录一个mq的控制台可见两个节点启动正常
扩容
增加新机器:172.31.119.204: 在原两台机器上修改host为:
172.31.119.206 mq01
172.31.119.207 mq02
172.31.119.204 mq03
在原两台机器上重启mq,以便使其识别hosts文件
docker restart rabbit
在新机器上执行建立执行上述《“分别在两台机器上执行如下操作”》章节中的内容
在新机器上运行mq:
docker run -d --rm --hostname mq03 --network=host \
-v /opt/data/mqdata:/var/lib/rabbitmq \
-v /opt/config/mq:/etc/rabbitmq \
-e RABBITMQ_ERLANG_COOKIE='MY-SECRET-KEY' \
--name rabbit registry.cn-beijing.aliyuncs.com/javashop-k8s-images/rabbitmq:3.8.2.2-management-alpine
效果如下: