CentOS 7 下安装 Elasticsearch集群

CentOS 7 下安装 Elasticsearch集群

vim /etc/yum.repos.d/elasticsearch.repo
[elasticsearch]
name=Elasticsearch repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=0
autorefresh=1
type=rpm-md
sudo yum install --enablerepo=elasticsearch elasticsearch

cluster.name : elk 必须相同

node.name: node-1 必须不同

path.data: /path/to/data 默认

node.master: true

node.data: true

discovery.seed_hosts: ["host1", "host2"] #地址不能写自己的

transport.tcp.port: 9300

discovery.zen.minimum_master_nodes: 4

/var/lib/elasticsearch/nodes

Elasticsearch安全认证

集群身份认证需要跟集群内部安全通信一起配置不然会报错

一、集群身份认证

在elasticsearch.yml配置文件中加入

xpack.security.enabled: true

二、集群内部安全通信

1.生成证书

为Elasticsearch集群创建一个证书颁发机构。

bin/elasticsearch-certutil ca

2.为集群中的每个节点生成证书和私钥

bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12

可以在创建过程中加入密码

3.将证书拷贝到elasticsearch的每个节点下面config/certs目录下

elastic-stack-ca.p12

4.配置elasticsearch.yml文件

xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.verification_mode: certificate

xpack.security.transport.ssl.keystore.path: certs/elastic-stack-ca.p12
xpack.security.transport.ssl.truststore.path: certs/elastic-stack-ca.p12

5.如果在创建证书的过程中加了密码,需要将你的密码加入到你的Elasticsearch keystore中去。每个节点都需要

bin/elasticsearch-keystore add xpack.security.transport.ssl.keystore.secure_password

bin/elasticsearch-keystore add xpack.security.transport.ssl.truststore.secure_password

三、给认证的集群创建用户密码

bin/elasticsearch-setup-passwords interactive

通过第三步,可以给ES中许多内置的用户创建密码

  • elastic 账号:拥有 superuser 角色,是内置的超级用户。
  • kibana 账号:拥有 kibana_system 角色,用户 kibana 用来连接 elasticsearch 并与之通信。Kibana 服务器以该用户身份提交请求以访问集群监视 API 和 .kibana 索引。不能访问 index。
  • logstash_system 账号:拥有 logstash_system 角色。用户 Logstash 在 Elasticsearch 中存储监控信息时使用。
  • beats_system账号:拥有 beats_system 角色。用户 Beats 在 Elasticsearch 中存储监控信息时使用。

elastic是超级用户,它可以做任何事情

四、在Kibana中设置登录ES的用户

我们可以首先给Kibana配置上超级用户elastic,这样可以使用Kibana给ES集群配置不同的用户与角色。

  • 角色:我们可以给ES中的角色,赋予对不同索引的不同的读写权限。
  • 用户:我们可以将不同角色,赋予用户。

有两种方式使kibana访问ES集群。

  • 在Kibana.yml中配置
elasticsearch.username: "xxx"
elasticsearch.password: "xxx"
  • 使用Kibana.keystore
bin/kibana-keystore create
bin/kibana-keystore add elasticsearch.name
bin/kibana-keystore add elasticsearch.password
#删除
bin/kibana-keystore remove xxxx

登录Kibana设置角色跟用户

img

我们可以看到security下一个为设置用户一个为设置角色。

更多可查看

https://www.elastic.co/cn/blog/getting-started-with-elasticsearch-security

5.使用python连接设置好用户验证的ES集群

使用elasticsearch库

class ElasticSearchClient(object):
    # TODO:实例和事务化单个node,若需要多个node,需要重构代码
    def __init__(self):
        self.es_servers = [{
            "host": 'xx.xx.141.141',
            "port": '9200'
        }]
        self.es_client = elasticsearch.Elasticsearch(hosts=self.es_servers,http_auth=("xxxx", "xxxx"))#加入http_auth=("用户名","密码")
        # TODO:进行创建一个数据库,即index
    def create_es_index(self, index_name):
        self.es_client.indices.create(index=index_name)

    # TODO:进行删除一个数据库,即index
    def delete_es_index(self, index_name):
        self.es_client.indices.delete(index=index_name)
posted @ 2021-12-06 09:31  罗斯大人  阅读(240)  评论(0)    收藏  举报