之前我有在centos系统的服务器上部署elasticsearch,具体请移步《Elasticsearch(一)Elasticsearch安装与配置》
但是,上边这个安装并没有配置账号密码,所以,任何人都可以访问,这在生产环境中是不被允许的。
这里我尝试在docker中部署elasticsearch并配置账号密码登录。
我这里使用的是docker-compose
一:docker-compose.yml
version: "3.8"
services:
elasticsearch:
container_name: es
image: elasticsearch:7.17.3
ports:
- "9200:9200"
- "9300:9300"
environment:
node.name: es
cluster.name: elasticsearch
discovery.type: single-node
ES_JAVA_OPTS: -Xms64m -Xmx512m
network.host: 0.0.0.0
http.port: 9200
# discovery.seed_hosts: ["localhost:9300"]
volumes:
- /opt/docker/elasticsearch/data:/usr/share/elasticsearch/data
- /opt/docker/elasticsearch/logs:/usr/share/elasticsearch/logs
- /opt/docker/elasticsearch/plugins:/usr/share/elasticsearch/plugins
restart: always
运行docker-compose.yml文件:
docker compose up -d
初次运行时间较长,可能得等一会儿。容器创建成功之后。使用命令查看正在运行的容器:
docker ps -a
在浏览器中打开链接:
发现elasticsearch搭建成功,已经可以访问了。
二:elasticsearch配置账号密码登录
1:生成证书:
1) 使用命令进入容器:
docker exec -it es /bin/bash
2) 生成ca证书
./bin/elasticsearch-certutil ca
3) 生成证书一路回车即可
2:生成cert证书
生成cert证书:
./bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12
生成证书过程一路回车即可,一共需要三个回车,你也可以在最后一个回车位置输入密码。
3:查看证书:
ll
发现elastic-certificates.p12这个文件,说明证书生成成功。
4:退出容器
exit
5:拷贝es容器证书
1) 创建一个存放证书的目录:
mkdir /opt/docker/elasticsearch/cert
2) 拷贝证书:
docker cp es:/usr/share/elasticsearch/elastic-certificates.p12 /opt/docker/elasticsearch/cert
3) 授权证书:
chmod 777 /opt/docker/elasticsearch/cert/elastic-certificates.p12
6:添加配置文档elasticsearch.yml
创建一个存放elasticsearch.yml的目录:
mkdir /opt/docker/elasticsearch/config
创建elasticsearch.yml文件
touch elasticsearch.yml
编辑elasticsearch.yml文件
vi elasticsearch.yml
内容如下:
cluster.name: "docker-cluster"
network.host: 0.0.0.0
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.keystore.type: PKCS12
xpack.security.transport.ssl.verification_mode: certificate
xpack.security.transport.ssl.keystore.path: /usr/share/elasticsearch/config/elastic-certificates.p12
xpack.security.transport.ssl.truststore.path: /usr/share/elasticsearch/config/elastic-certificates.p12
xpack.security.transport.ssl.truststore.type: PKCS12
xpack.security.audit.enabled: true
7:编辑docker-compose.yml文件
添加证书和elasticsearch.yml的目录挂载,文件内容如下:
version: "3.8"
services:
elasticsearch:
container_name: es
image: elasticsearch:7.17.3
ports:
- "9200:9200"
- "9300:9300"
environment:
node.name: es
cluster.name: elasticsearch
discovery.type: single-node
ES_JAVA_OPTS: -Xms64m -Xmx512m
network.host: 0.0.0.0
http.port: 9200
volumes:
- /opt/docker/elasticsearch/data:/usr/share/elasticsearch/data
- /opt/docker/elasticsearch/logs:/usr/share/elasticsearch/logs
- /opt/docker/elasticsearch/plugins:/usr/share/elasticsearch/plugins
- /opt/docker/elasticsearch/cert/elastic-certificates.p12:/usr/share/elasticsearch/config/elastic-certificates.p12
- /opt/docker/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
restart: always
重新运行docker-compose.yml文件
docker compose up -d
配置到这一步,你就可以访问:
这个时候你会发现,需要账号密码登录了,但是呢,我们还没有配置账号密码,所以下一步就需要进入容器配置账号密码。
8:设置es账号密码
进入es容器
docker exec -it es /bin/bash
设置密码(账号默认为 elastic)
./bin/elasticsearch-setup-passwords interactive
Elasticsearch会默认创建很多用户,你需要挨一个给他们设置密码,这里建议都使用一个。容易记住。到这里,es的账号密码配置就完成了。
浏览器访问:
输入默认账号:elastic以及刚才你配置的密码,即可登录es
三:配置kibana
我的kibana也是使用docker安装的,具体的安装过程会在另一篇文章中写出。这里只描述如何配置elasticsearch的账号密码登录。
1:添加kibana登录的账号和密码
有同学可能会有疑问,上边es默认创建了很多账号密码,直接使用他们不就可以了嘛。很明显,不行。因为es 不允许使用elastic用户登录kibana
所以这里需要创建一个自定义用户
进入es容器,
docker exec -it es bash
执行命令添加用户
bin/elasticsearch-users useradd test
添加了用户,并需要给这个用户添加角色不然会报错
角色授权
bin/elasticsearch-users roles -a superuser test
bin/elasticsearch-users roles -a kibana_system test
2:配置kibana.yml
i18n.locale: zh-CN
server.host: "0.0.0.0"
server.shutdownTimeout: "5s"
elasticsearch.hosts: [ "http://es:9200" ]
elasticsearch.username: "test"
elasticsearch.password: "*********"
3:测试一下
浏览器访问:
这个时候,不出意外,你的kibana也是需要账号密码登录了。
有好的建议,请在下方输入你的评论。