日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

使用Docker搭建Elasticsearch6.8.6集群及设置集群用户密码

發布時間:2025/3/16 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用Docker搭建Elasticsearch6.8.6集群及设置集群用户密码 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文基于Docker鏡像搭建Elasticsearch集群,集群搭建完成后設置集群用戶密碼,主要包含以下內容:

  • 修改系統參數
  • 安裝docker和docker-compose
  • 編寫yml配置文件
  • 獲取集群證書
  • 修改yml配置文件
  • 啟動ES集群并修改密碼
  • 配置kibana

(一)修改系統參數

? ? (1)? ? virtual memory

默認情況下,Elasticsearch使用mmapfs目錄存儲其索引,mmap計數的默認操作系統限制可能太低,這可能會導致內存不足,需要將其調至262144。在?/etc/sysctl.conf 添加一行 :

vm.max_map_count=262144

運行 sysctl -p 使其生效。

(2)disable swap file

通常,Elasticsearch的內存使用由JVM選項控制。不需要啟用交換。Linux系統可執行 swapoff -a 不啟用。為了避免每次開機都需要手動執行,可將其寫入開機執行文件?/etc/rc.local,開機自動執行。

(3)ulimit -n

? ? ? 系統默認設置1024。Elasticsearch使用了很多文件描述符,文件描述符用完可能是災難性的,并且很可能導致數據丟失。因此運行Elasticsearch之前需要將文件描述符的數量限制增加到65536或更高。在?/etc/security/limits.conf?末尾追加以下內容:

root soft nofile 65536 root hard nofile 65536 * soft nofile 65536 * hard nofile 65536 * soft memlock unlimited * hard memlock unlimited

如果是Ubuntu系統,追加上述內容后,ulimit -n可能并沒有從1024變為65536,還需要在?/etc/systemd/user.conf?/etc/systemd/system.conf?中追加?

DefaultLimitNOFILE=65535

注意:修改后重啟機器

(二)安裝docker和docker-compose

(1)安裝docker

Ubuntu和Debian可新建docker.sh,添加以下內容:

#!/bin/bash OS_NAME=`cat /etc/os-release | grep NAME`sudo apt-get update sudo apt-get install -y apt-transport-https ca-certificates curl gnupg2 software-properties-common iptables sudo apt-get remove docker docker-engine docker.io containerd runcif [[ $OS_NAME =~ "Ubuntu" ]];thensudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" elsecurl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable" fisudo apt-get update sudo apt-get install -y docker-ce sudo systemctl start docker

CentOS系統添加以下內容到docker.sh中,賦予可執行權限,運行即可。

#!/bin/bash sudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-selinux \docker-engine-selinux \docker-enginesudo yum install -y yum-utils device-mapper-persistent-data lvm2 iptablessudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo sudo yum install -y docker-ce sudo systemctl start docker

(2)安裝docker-compose

新建docker-compose.sh,添加以下內容并賦予執行權限后執行。

#!/bin/bashif [ -f "/usr/local/bin/docker-compose" ]; thensudo rm /usr/local/bin/docker-compose #清除舊版本docker-compose ficurl -L https://github.com/docker/compose/releases/download/1.25.4/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-composesudo chmod +x /usr/local/bin/docker-compose

安裝完成后獲取elasticsearch:6.8.6鏡像,為創建集群做準備。

docker pull elasticsearch:6.8.6

(三)編寫yml文件

新建/opt/es目錄,在es目錄下新建config目錄docker-compose.yml文件。

docker-compose.yml

version: '2.2' services:es01:image: elasticsearch:6.8.6container_name: es01environment:- node.name=es01- cluster.name=bastion-es-cluster- bootstrap.memory_lock=true- "ES_JAVA_OPTS=-Xms128m -Xmx128m"ulimits:memlock:soft: -1hard: -1volumes:- /opt/es-cluster/config/es01.yml:/usr/share/elasticsearch/config/elasticsearch.yml- /opt/es-cluster/data:/usr/share/elasticsearch/data- /opt/es-cluster/logs:/usr/share/elasticsearch/logsports:- 9200:9200network_mode: hostes02:image: elasticsearch:6.8.6container_name: es02environment:- node.name=es02- cluster.name=bastion-es-cluster- bootstrap.memory_lock=true- "ES_JAVA_OPTS=-Xms128m -Xmx128m"ulimits:memlock:soft: -1hard: -1volumes:- /opt/es-cluster/config/es02.yml:/usr/share/elasticsearch/config/elasticsearch.yml- /opt/es-cluster/data:/usr/share/elasticsearch/data- /opt/es-cluster/logs:/usr/share/elasticsearch/logsnetwork_mode: hostes03:image: elasticsearch:6.8.6container_name: es03environment:- node.name=es03- cluster.name=bastion-es-cluster- bootstrap.memory_lock=true- "ES_JAVA_OPTS=-Xms128m -Xmx128m"ulimits:memlock:soft: -1hard: -1volumes:- /opt/es-cluster/config/es03.yml:/usr/share/elasticsearch/config/elasticsearch.yml- /opt/es-cluster/data:/usr/share/elasticsearch/data- /opt/es-cluster/logs:/usr/share/elasticsearch/logsnetwork_mode: host

在config目錄下新建es01.yml,es02.yml,es03.yml,內容如下:

es01.yml

cluster.name: es-cluster node.name: es01bootstrap.memory_lock: true bootstrap.system_call_filter: falsenetwork.host: 0.0.0.0transport.tcp.port: 9300discovery.zen.minimum_master_nodes: 2 discovery.zen.ping.unicast.hosts:- 127.0.0.1:9300- 127.0.0.1:9301- 127.0.0.1:9302node.data: true node.master: truenode.max_local_storage_nodes: 7

es02.yml

cluster.name: es-cluster node.name: es02bootstrap.memory_lock: true bootstrap.system_call_filter: falsenetwork.host: 0.0.0.0transport.tcp.port: 9301discovery.zen.minimum_master_nodes: 2 discovery.zen.ping.unicast.hosts:- 127.0.0.1:9300- 127.0.0.1:9301- 127.0.0.1:9302node.data: true node.master: truenode.max_local_storage_nodes: 7

es03.yml

cluster.name: es-cluster node.name: es03bootstrap.memory_lock: true bootstrap.system_call_filter: falsenetwork.host: 0.0.0.0transport.tcp.port: 9302discovery.zen.minimum_master_nodes: 2 discovery.zen.ping.unicast.hosts:- 127.0.0.1:9300- 127.0.0.1:9301- 127.0.0.1:9302node.data: true node.master: truenode.max_local_storage_nodes: 7

在docker-compose.yml所在目錄,執行docker-compose up即可創建一個Elasticsearch集群。此集群包含3個節點,每個節點既是master節點,又是data節點。在瀏覽器輸入 Your_IP:9200,看到類似下面的內容說明創建成功。

至此,一個包含3個節點的Elasticsearch集群已經搭建完成。但是存在一個問題:只要知道ip,任何人都可以訪問這個進群,進行添加、刪除索引等操作,這顯然不是我們想要的結果。所以需要設置用戶和密碼,只有用戶名和密碼正確才有權限訪問。

(四)獲取集群證書

依次執行以下步驟

#查看啟動的容器 docker ps #進入其中一個容器 docker exec -it 容器ID或名稱?/bin/bash #創建證書頒發機構 bin/elasticsearch-certutil ca#生成證書和私鑰 bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12#退出容器 exit#從容器中拷貝證書 docker cp 容器ID:/usr/share/elasticsearch/elastic-certificates.p12 .

生成的?elastic-certificates.p12 就是我們需要的證書,容器之間通過證書認證通信。

(五)修改yml配置文件

新建目錄certificates,將?elastic-certificates.p12 放在certificate中,在es01.yml、es02.yml、es03.yml中添加下列內容

xpack.security.enabled: true xpack.security.authc.accept_default_password: true xpack.security.transport.ssl.enabled: true xpack.security.transport.ssl.verification_mode: certificate xpack.security.transport.ssl.keystore.path: /usr/share/elasticsearch/config/certificates/elastic-certificates.p12 xpack.security.transport.ssl.truststore.path: /usr/share/elasticsearch/config/certificates/elastic-certificates.p12

修改docker-compose.yml,在每個volume下添加

- /opt/es/certificates:/usr/share/elasticsearch/config/certificates

(六)啟動ES集群并修改密碼

再次執行docker-compose up啟動集群,再打開一個terminal,進入任意一個容器,執行

./bin/elasticsearch-setup-passwords interactive

如果出現下面的內容,說明不能在這個容器中設置密碼。

回到執行docker-compose up的terminal,可看到類似下面的日志,進入到這個容器中,執行上面的命令即可設置密碼。

執行設置密碼的命令,如果出現下面的內容,輸入y即可設置elastic,apm_system,kibana,logstash_system,beats_system,remote_monitoring_user這幾個內置用戶的密碼。

設置完成后,再訪問Elasticsearch集群時,就需要提供用戶名和密碼才能訪問。

(七)配置kibana

#獲取kibana鏡像 docker pull kibana:6.8.6 #啟動一個kibana容器 docker run -dit -p 5601:5601 --name es_kibana kibana:6.8.6#進入kibana容器 docker exec -dit es_kibana /bin/bash#修改kibana配置文件 vi config/kibana.yml1、將 elasticsearch.hosts 修改為你的ip 2、添加下面兩行 elasticsearch.username: kibana elasticsearch.password: 你設置的kibana密碼

保存退出容器后,執行下面的命令重啟es_kibana容器

docker restart es_kibana

在瀏覽器中輸入Your_IP:5601,輸入用戶名和密碼即可登錄kibana。

總結

以上是生活随笔為你收集整理的使用Docker搭建Elasticsearch6.8.6集群及设置集群用户密码的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。