启动 ES 容器
本次搭建一个伪集群
- # 启动第一个
- docker run --name es-1 -d -p 9200:9200 -p 9300:9300 --network esnet --mount type=bind,src=/var/lib/docker/volumes/es-1/_data,dst=/usr/share/Elasticsearch/data 2bd69c322e98
- # 启动第二个
- docker run --name es-2 -d -p 9201:9201 -p 9301:9301 --network esnet --mount type=bind,src=/var/lib/docker/volumes/es-2/_data,dst=/usr/share/Elasticsearch/data 2bd69c322e98
- # 启动第三个
- docker run --name es-3 -d -p 9202:9202 -p 9302:9302 --network esnet --mount type=bind,src=/var/lib/docker/volumes/es-3/_data,dst=/usr/share/Elasticsearch/data 2bd69c322e98
在此处启动时一般会出现如下错误:
- ERROR: [2] Bootstrap checks failed
- [1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
- [2]: the default discovery settings are unsuitable for production use; at least one of [discovery.seed_hosts, discovery.seed_providers, cluster.initial_master_nodes] must be configured
第一个问题可以通过如下命令解决
sysctl -w vm.max_map_count=262144
第二个问题则需要通过配置 ES 的配置文件, 当然也可以通过参数输入的方式 (-e "")
但亲测时这样创建的集群 clusteruuid 将会是 "_na", 这样节点接不能互通
ES 的配置文件路径:/usr/share/Elasticsearch/config
- # 集群名称
- cluster.name: my
- # 节点名称
- node.name: node-1
- # 是不是有资格主节点
- node.master: true
- # 是否存储数据
- node.data: true
- # 最? 集群节点数
- node.max_local_storage_nodes: 3
- #? 关地址
- network.host: 0.0.0.0
- # 设置其它结点和该结点交互的 ip 地址, 如果不设置它会自动判断, 值必须是个真实的 ip 地址
- # 如果是 docker 安装节点的 IP 将会是配置的 IP 而不是 docker 网管 ip
- network.publish_host: 192.168.172.128
- # 端?
- http.port: 9200
- # 内部节点之间沟通端?
- transport.tcp.port: 9300
- #es7.x 之后新增的配置, 写? 候选主节点的设备地址, 在开启服务后可以被选为主节点
- discovery.seed_hosts: ["192.168.172.128:9300","192.168.172.128:9301","192.168.172.128:9302"]
- #es7.x 之后新增的配置, 初始化? 个新的集群时需要此配置来选举 master
- cluster.initial_master_nodes: ["node-1", "node-2","node-3"]
- # 数据和存储路径
- path.data: /usr/share/Elasticsearch/data
- path.logs: /usr/share/Elasticsearch/logs
- # 解决跨域问题
- http.cors.enabled: true
- http.cors.allow-origin: "*"
来源: http://www.bubuko.com/infodetail-3421564.html