【docker系列】三臺阿里雲服務器搭建elasticsearch:7.4.2集羣

三臺阿里雲服務器地址我:
101.100.0.1
101.100.0.2
101.100.0.3

1、這三臺分別在同一個大區下的,不同可用區。我是通過docker 搭建,用的是 docker 的overlay網絡,非host網絡。所以,在這之前,需要先創建一個 overlay 網絡。如下:
【docker系列】Docker Swarm 集羣,跨主機網絡通信環境搭建

2、需要在三臺服務器上,分別啓動 elasticsearch docker容器

----------------------------------安裝 master_elasticsearch ---------------------------

### 啓動簡單版,然後 copy 文件到 宿主機,最後刪除該容器
sudo docker run -tid \
--hostname=keda_elasticsearch \
--name=keda-elasticsearch \
-p 19200:9200 \
-p 19300:9300 \
-v /etc/localtime:/etc/localtime \
-e ES_JAVA_OPTS="-Xms4g -Xmx4g" \
-e TZ='Asia/Shanghai' \
-e LANG="en_US.UTF-8" \
elasticsearch:7.4.2


docker cp keda-elasticsearch:/usr/share/elasticsearch/config/   /usr/docker/software/elasticsearch/
docker cp keda-elasticsearch:/usr/share/elasticsearch/data/   /usr/docker/software/elasticsearch/
docker cp keda-elasticsearch:/usr/share/elasticsearch/logs/   /usr/docker/software/elasticsearch/
docker cp keda-elasticsearch:/usr/share/elasticsearch/plugins/   /usr/docker/software/elasticsearch/

docker stop keda-elasticsearch

docker rm keda-elasticsearch

## 如果需要修改配置文件,先修改。 在啓動 正式版容器

sudo docker run -tid \
-m 4096M --memory-swap -1 \
--net cluster-overlay-software \
--ip 18.0.0.244 \
--restart=always \
--privileged=true \
--hostname=master_elasticsearch \
--name=keda6-master-elasticsearch \
-p 19200:9200 \
-p 19300:9300 \
-v /usr/docker/software/elasticsearch/config/:/usr/share/elasticsearch/config/ \
-v /usr/docker/software/elasticsearch/data/:/usr/share/elasticsearch/data/ \
-v /usr/docker/software/elasticsearch/logs/:/usr/share/elasticsearch/logs/ \
-v /usr/docker/software/elasticsearch/plugins/:/usr/share/elasticsearch/plugins/ \
-v /etc/localtime:/etc/localtime \
-e TZ='Asia/Shanghai' \
-e LANG="en_US.UTF-8" \
elasticsearch:7.4.2

----------------------------------安裝 slave1_elasticsearch ---------------------------

### 啓動簡單版,然後 copy 文件到 宿主機,最後刪除該容器
sudo docker run -tid \
--hostname=keda_elasticsearch \
--name=keda-elasticsearch \
-p 19200:9200 \
-p 19300:9300 \
-v /etc/localtime:/etc/localtime \
-e ES_JAVA_OPTS="-Xms4g -Xmx4g" \
-e TZ='Asia/Shanghai' \
-e LANG="en_US.UTF-8" \
elasticsearch:7.4.2


docker cp keda-elasticsearch:/usr/share/elasticsearch/config/   /usr/docker/software/elasticsearch/
docker cp keda-elasticsearch:/usr/share/elasticsearch/data/   /usr/docker/software/elasticsearch/
docker cp keda-elasticsearch:/usr/share/elasticsearch/logs/   /usr/docker/software/elasticsearch/
docker cp keda-elasticsearch:/usr/share/elasticsearch/plugins/   /usr/docker/software/elasticsearch/

docker stop keda-elasticsearch

docker rm keda-elasticsearch

## 如果需要修改配置文件,先修改。 在啓動 正式版容器

sudo docker run -tid \
-m 4096M --memory-swap -1 \
--net cluster-overlay-software \
--ip 18.0.0.242 \
--restart=always \
--privileged=true \
--hostname=slave_elasticsearch \
--name=keda6-slave1-elasticsearch \
-p 19200:9200 \
-p 19300:9300 \
-v /usr/docker/software/elasticsearch/config/:/usr/share/elasticsearch/config/ \
-v /usr/docker/software/elasticsearch/data/:/usr/share/elasticsearch/data/ \
-v /usr/docker/software/elasticsearch/logs/:/usr/share/elasticsearch/logs/ \
-v /usr/docker/software/elasticsearch/plugins/:/usr/share/elasticsearch/plugins/ \
-v /etc/localtime:/etc/localtime \
-e TZ='Asia/Shanghai' \
-e LANG="en_US.UTF-8" \
elasticsearch:7.4.2

----------------------------------安裝 slave2_elasticsearch ---------------------------

### 啓動簡單版,然後 copy 文件到 宿主機,最後刪除該容器
sudo docker run -tid \
--hostname=keda_elasticsearch \
--name=keda-elasticsearch \
-p 19200:9200 \
-p 19300:9300 \
-v /etc/localtime:/etc/localtime \
-e ES_JAVA_OPTS="-Xms4g -Xmx4g" \
-e TZ='Asia/Shanghai' \
-e LANG="en_US.UTF-8" \
elasticsearch:7.4.2


docker cp keda-elasticsearch:/usr/share/elasticsearch/config/   /usr/docker/software/elasticsearch/
docker cp keda-elasticsearch:/usr/share/elasticsearch/data/   /usr/docker/software/elasticsearch/
docker cp keda-elasticsearch:/usr/share/elasticsearch/logs/   /usr/docker/software/elasticsearch/
docker cp keda-elasticsearch:/usr/share/elasticsearch/plugins/   /usr/docker/software/elasticsearch/

docker stop keda-elasticsearch

docker rm keda-elasticsearch

## 如果需要修改配置文件,先修改。 在啓動 正式版容器

sudo docker run -tid \
-m 4096M --memory-swap -1 \
--net cluster-overlay-software \
--ip 18.0.0.243 \
--restart=always \
--privileged=true \
--hostname=slave_elasticsearch \
--name=keda6-slave2-elasticsearch \
-p 19200:9200 \
-p 19300:9300 \
-v /usr/docker/software/elasticsearch/config/:/usr/share/elasticsearch/config/ \
-v /usr/docker/software/elasticsearch/data/:/usr/share/elasticsearch/data/ \
-v /usr/docker/software/elasticsearch/logs/:/usr/share/elasticsearch/logs/ \
-v /usr/docker/software/elasticsearch/plugins/:/usr/share/elasticsearch/plugins/ \
-v /etc/localtime:/etc/localtime \
-e TZ='Asia/Shanghai' \
-e LANG="en_US.UTF-8" \
elasticsearch:7.4.2

  3臺都一樣。ip  和 name 必須不一樣, 一個網段集羣中,不能有相同的 容器名和ip

3、修改配置文件

# 配置es的集羣名稱,默認是elasticsearch,es會自動發現在同一網段下的es,如果在同一網段下有多個集羣,就可以用這個屬性來區分不同的集羣。
cluster.name: "docker-cluster"

# 節點名,默認隨機指定一個name列表中名字,該列表在es的jar包中config文件夾裏name.txt文件中,其中有很多作者添加的有趣名字。 
node.name: "node-1"

 
# 指定該節點是否有資格被選舉成爲node,默認是true,es是默認集羣中的第一臺機器爲master,如果這臺機掛了就會重新選舉master。
node.master: true

# 指定該節點是否存儲索引數據,默認爲true。
node.data: true

 
# 設置爲true來鎖住內存。因爲當jvm開始swapping時es的效率會降低,所以要保證它不swap,可以把 ES_MIN_MEM和ES_MAX_MEM兩個環境變量設置成同一個值,並且保證機器有足夠的內存分配給es。同時也要允許elasticsearch的進程可以鎖住內存,linux下可以通過ulimit -l unlimited命令。
 bootstrap.memory_lock: false

 
# 這個參數是用來同時設置bind_host和publish_host上面兩個參數。
network.host: 0.0.0.0

# 設置節點間交互的tcp端口,默認是9300。 
transport.tcp.port: 9300

# 設置對外服務的http端口,默認爲9200。 
http.port: 9200

# 設置這個參數來保證集羣中的節點可以知道其它N個有master資格的節點。默認爲1,對於大的集羣來說,可以設置大一點的值(2-4)
discovery.zen.minimum_master_nodes: 1

 

# 設置集羣中master節點的初始列表,可以通過這些節點來自動發現新加入集羣的節點。 
discovery.zen.ping.unicast.hosts: ["keda6-master-elasticsearch","keda6-slave1-elasticsearch","keda6-slave2-elasticsearch"]


# 開啓跨域,爲了讓es-head可以訪問
#http.cors.enabled: true
#http.cors.allow-origin: "*"

cluster.initial_master_nodes: ["node-1"]

http.cors.enabled: true
http.cors.allow-origin: "*"
http.cors.allow-headers: Authorization
xpack.security.enabled: false
xpack.security.transport.ssl.enabled: false

注:
3臺配置文件 
node.name: 不能一樣,
cluster.name :必須一樣
其他都是一樣的。


我設置的三個 node.name 分別爲  node-1,node-2,node-3

四、重啓服務,就行了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章