在centos7使用docker搭建elasticsearch集群

一 、docker的安装

https://www.cnblogs.com/ghostdot/p/12410242.html

二、创建相关映射文件

cd /home/
mkdir node
cd node
mkdir es_node1 es_node2 es_node2 plugins
cd es_node1
mkdir data 
touch elastisearch.yml
cd /home/node
cd es_node2
mkdir data 
touch elastisearch.yml
cd /home/node
cd es_node3
mkdir data 
touch elastisearch.yml


三、编写elasticsearch.yml配置文件

vim /home/node/es_node1/elasticsearch.yml

cluster.name: elasticsearch-cluster  #集群唯一名称,所有节点一致
node.name: es_node1                     #节点名称
network.bind_host: 0.0.0.0              #设置可以访问的ip,默认为0.0.0.0,这里全部设置通过
network.publish_host: 192.168.2.2       #设置其它结点和该结点交互的ip地址
http.port: 9200                     #设置对外服务的http端口,默认为9200
transport.tcp.port: 9300           #设置节点之间交互的tcp端口,默认是9300
http.cors.enabled: true
http.cors.allow-origin: "*"
node.master: true           #配置该结点是否有资格被选举为主结点(候选主结点),为了防止脑裂,配置奇数个候选主结点
node.data: true              #配置该结点是数据结点,用于保
discovery.zen.ping.unicast.hosts: ["192.168.2.2:9300","192.168.2.2:9301","192.168.2.2:9302"] #集群个节点IP地址
discovery.zen.minimum_master_nodes: 2  #自动发现master节点的最小数
indices.query.bool.max_clause_count: 10240

vim /home/node/es_node2/elasticsearch.yml

cluster.name: elasticsearch-cluster  #集群唯一名称,所有节点一致
node.name: es_node2                    #节点名称
network.bind_host: 0.0.0.0              #设置可以访问的ip,默认为0.0.0.0,这里全部设置通过
network.publish_host: 192.168.2.2       #设置其它结点和该结点交互的ip地址
http.port: 9201                     #设置对外服务的http端口,默认为9200
transport.tcp.port: 9301           #设置节点之间交互的tcp端口,默认是9300
http.cors.enabled: true
http.cors.allow-origin: "*"
node.master: true           #配置该结点是否有资格被选举为主结点(候选主结点),为了防止脑裂,配置奇数个候选主结点
node.data: true              #配置该结点是数据结点,用于保存
discovery.zen.ping.unicast.hosts: ["192.168.2.2:9300","192.168.2.2:9301","192.168.2.2:9302"] #集群个节点IP地址
discovery.zen.minimum_master_nodes: 2  #自动发现master节点的最小数
indices.query.bool.max_clause_count: 10240

vim /home/node/es_node3/elasticsearch.yml

cluster.name: elasticsearch-cluster  #集群唯一名称,所有节点一致
node.name: es_node3                    #节点名称
network.bind_host: 0.0.0.0              #设置可以访问的ip,默认为0.0.0.0,这里全部设置通过
network.publish_host: 192.168.2.2       #设置其它结点和该结点交互的ip地址
http.port: 9202                    #设置对外服务的http端口,默认为9200
transport.tcp.port: 9302           #设置节点之间交互的tcp端口,默认是9300
http.cors.enabled: true
http.cors.allow-origin: "*"
node.master: true           #配置该结点是否有资格被选举为主结点(候选主结点),为了防止脑裂,配置奇数个候选主结点
node.data: true              #配置该结点是数据结点,用于保存数据
discovery.zen.ping.unicast.hosts: ["192.168.2.2:9300","192.168.2.2:9301","192.168.2.2:9302"] #集群个节点IP地址
discovery.zen.minimum_master_nodes: 2  #自动发现master节点的最小数
indices.query.bool.max_clause_count: 10240

四、修改宿主机相关配置文件

# 关闭防火墙
systemctl status firewalld
systemctl stop firewalld.service  
systemctl disable firewalld.service
# 修改limits.conf
vim /etc/security/limits.conf
# 在最后添加: *表示所用用户
*                hard    nofile          65536
*                soft    nofile          65536
*                soft    nproc           65536
*                hard    nproc           65536
# 修改sysctl.conf
vim /etc/sysctl.conf
# 在最后添加
vm.max_map_count=262144
# 关闭selinux
vim /etc/sysconfig/selinux
# 将 SELINUX=enforcing 改为 SELINUX=disabled

五、ES插件的安装

如果不需要插件,这个步骤可以省略

 # 下载地址:
 # https://github.com/medcl/elasticsearch-analysis-ik/releases
 # 拷贝到plugins下
 #  tar -zxvf 下载文件
 # 解压后将原文件删除
 # 建议chmod -R 777 包名

六、启动ES集群

   docker run -e ES_JAVA_OPTS="-Xms512m -Xmx512m" -d -p 9200:9200 -p 9300:9300 -v /home/node/es_node1/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /home/node/es_node1/data:/usr/share/elasticsearch/data -v /home/node/plugins:/usr/share/elasticsearch/plugins --name ES01 elasticsearch:5.1.1
   docker run -e ES_JAVA_OPTS="-Xms512m -Xmx512m" -d -p 9201:9201 -p 9301:9301 -v /home/node/es_node2/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /home/node/es_node2/data:/usr/share/elasticsearch/data -v /home/node/plugins:/usr/share/elasticsearch/plugins --name ES02 elasticsearch:5.1.1
   docker run -e ES_JAVA_OPTS="-Xms512m -Xmx512m" -d -p 9202:9202 -p 9302:9302 -v /home/node/es_node3/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /home/node/es_node3/data:/usr/share/elasticsearch/data -v /home/node/plugins:/usr/share/elasticsearch/plugins --name ES03 elasticsearch:5.1.1


访问 http://宿主机ip:9200/_cat/nodes

七、写在最后

ES_JAVA_OPTS="-Xms512m -Xmx512m"
512m为其内存,可以自己根据寻求就行分配,内存越高es的效率也就越高
elasticsearch:5.1.1 
版本可以自己根据需要进行选择
如果出现权限不足或者报错,可以尝试
cd /home
chmod -R 777 node
chown -R 777 node
插件选择时版本应该和ES版本相对应

给出集群创建后的tree,各节点中data下,在创建前是没有内容的,图片中为节点生成后,docker内部映射出来的文件,如果需要重新创建请删除data中的内容,以免影响集群的创建成功

posted @ 2020-03-10 14:30  ghostdot  阅读(692)  评论(2编辑  收藏  举报