elasticsearch-集群安装

1,463 阅读4分钟

手动安装版

一. 安装es

image.png

  • 使用rz命令上传到服务器

  • 解压

tar -xvf elasticsearch-7.15.0-linux-x86_64.tar.gz
  • 配置jdk 因为解压的es中自带了jdk,所以不需要单独下载jdk,只需要在linux服务配置好java环境即可

修改文件vim /etc/profile

JAVA_HOME=/data/elasticsearch-7.15.0/jdk
PATH=$PATH:./:$JAVA_HOME/bin
export PATH JAVA_HOME

生效配置文件source /etc/profile

  • 创建用户 因为es不能在root用户下运行
groupadd te
useradd te -g te
chown -R te:te /data/elasticsearch-7.15.0/
  • 启动es 切换用户到te su te,然后到解压的es目录下面运行 ./bin/elasticsearch

二. 搭建集群

  • 首先需要准备三台服务器

  • 安装第一个环节中上传包,并且配置jdk环境

  • 修改运行所需要的配置文件

修改文件vim /etc/security/limits.conf 在最后一行添加如下:

* soft nofile 65536
* hard nofile 131072
* soft nproc 4096
* hard nproc 4096

修改文件vim /etc/sysctl.conf,添加如下:

vm.max_map_count=655360

生效文件sysctl -p

  • 修改es配置文件

修改主节点配置文件如下:vim config/elasticsearch.yml

cluster.name: es-cluster
node.name: es01
path.data: /data/elasticsearch-7.15.0/data
path.logs: /data/elasticsearch-7.15.0/logs
bootstrap.memory_lock: false
bootstrap.system_call_filter: false
network.host: 0.0.0.0
http.port: 9200
transport.tcp.port: 9300
discovery.seed_hosts: ["192.168.64.129", "192.168.64.130","192.168.64.131"]
cluster.initial_master_nodes: ["es01"]
http.cors.enabled: true
http.cors.allow-origin: "*"

其他节点子配置文件需要修改node.name 就行

如果运行的过程中保证几台机子能互通,并且关闭了防火墙

  • 访问

image.png

三. 安装header插件

git clone git://github.com/mobz/elasticsearch-head.git
  • 复制该包到到es的插件目录
mv elasticsearch-head /data/elasticsearch-7.15.0/plugins/

cd /data/elasticsearch-7.15.0/plugins/elasticsearch-head
  • 下载node.js
elasticsearch-head-master]# curl --silent --location https://rpm.nodesource.com/setup_10.x | bash -
 
elasticsearch-head-master]# yum install -y nodejs
  • 查看是否安装成功:
elasticsearch-head-master]# node -v
v10.16.0
elasticsearch-head-master]# npm -v
6.9.0
  • 安装grunt
elasticsearch-head-master]# npm install -g grunt-cli
 
elasticsearch-head-master]# npm install
  • 修改es配置,加入如下内容
http.cors.enabled: true
http.cors.allow-origin: "*"
  • 修改head配置 打开elasticsearch-head-master/Gruntfile.js,找到connect属性
server: {
        options: {
                hostname: '127.0.0.1',
                port: 9100,
                base: '.',
                keepalive: true
        }
}
  • 启动Head插件
grunt server
  • 访问

image.png

四. 安装kibana

image.png

  • 上传并解压
tar -xvf kibana-7.15.0-linux-x86_64.tar.gz -C /data/
  • 修改配置文件 vim config/kibana.yml 修改下面两项

image.png

  • 启动
./bin/kibana --allow-root

image.png

docker安装版

一、拉取镜像

主要拉取如下的docker镜像

docker pull elasticsearch:7.6.2
docker pull mobz/elasticsearch-head:5
docker pull kibana:7.6.2

二、创建配置文件

这里搭建的es集群

  • 主节点配置文件 准备es1.yml 文件
cluster.name: elasticsearch-cluster
node.name: es-node1
network.bind_host: 0.0.0.0
network.publish_host: _eth0_
http.port: 9200
transport.tcp.port: 9300
http.cors.enabled: true
http.cors.allow-origin: "*"
node.master: true
node.data: true
discovery.seed_hosts: ["ES01:9300","ES02:9301","ES03:9302"]
cluster.initial_master_nodes: ["es-node1","es-node2","es-node3"]
discovery.zen.minimum_master_nodes: 1
  • 从节点

从节点的配置文件和主节点一样,只是有一个不一样node.name: 响应的节点名称

三、写docker-compose.yml文件

version: '3.7'
services:
  es1:
    image: elasticsearch:7.6.2
    container_name: ES01
    environment:
      - ES_JAVA_OPTS=-Xms256m -Xmx256m
    ports:
      - "9200:9200"
      - "9300:9300"
    volumes:
      - D:/es/config/es1.yml:/usr/share/elasticsearch/config/elasticsearch.yml
      - D:/es/data1:/usr/share/elasticsearch/data
    networks:
      - es-net
  es2:
    image: elasticsearch:7.6.2
    container_name: ES02
    environment:
      - ES_JAVA_OPTS=-Xms256m -Xmx256m
    ports:
      - "9201:9200"
      - "9301:9300"
    volumes:
      - D:/es/config/es2.yml:/usr/share/elasticsearch/config/elasticsearch.yml
      - D:/es/data2:/usr/share/elasticsearch/data
    networks:
      - es-net
  es3:
    image: elasticsearch:7.6.2
    container_name: ES03
    environment:
      - ES_JAVA_OPTS=-Xms256m -Xmx256m
    ports:
      - "9202:9200"
      - "9302:9300"
    volumes:
      - D:/es/config/es3.yml:/usr/share/elasticsearch/config/elasticsearch.yml
      - D:/es/data3:/usr/share/elasticsearch/data
    networks:
      - es-net
  es-head:
    image: mobz/elasticsearch-head:5
    ports:
      - "9100:9100"
  kibana:
    image: kibana:7.6.2
    container_name: kibana
    environment:
      - SERVER_NAME=kibana
      - ELASTICSEARCH_URL=http://es1:9200
      - ELASTICSEARCH_HOSTS=http://es1:9200
      - XPACK_MONITORING_ENABLED=true
    ports:
      - 5601:5601
    networks:
      - es-net
    depends_on:
      - es1
    external_links:
      - es1

networks:
  es-net:
    driver: bridge

解释:es的挂载目录需要关注,最好抱持一直

四、运行构建

docker-composer up -d

image.png

image.png

image.png

ES集群配置访问权限

1.1 生成密钥

# 生成密钥
bin/elasticsearch-certutil cert -out config/elastic-certificates.p12 -pass ""
# 将密钥复制到其他两台主机上
scp config/elastic-certificates.p12 wenfeng@192.168.64.130:/data/elasticsearch-7.15.0/config

scp config/elastic-certificates.p12 wenfeng@192.168.64.131:/data/elasticsearch-7.15.0/config

1.2 修改es配置文件

修改三台主机es的配置文件中添加如下内容

# 这个是为了header插件访问时带密码时使用
http.cors.allow-headers: Authorization,X-Requested-With,Content-Length,Content-Type

# 配置访问密钥
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.verification_mode: certificate
xpack.security.transport.ssl.keystore.path: /data/elasticsearch-7.15.0/config/elastic-certificates.p12
xpack.security.transport.ssl.truststore.path: /data/elasticsearch-7.15.0/config/elastic-certificates.p12

1.3 初始化密码

bin/elasticsearch-setup-passwords interactive

该命令需要自己手动设置几个初始化密码

image.png

1.3 配置kibana访问

修改kibana的配置文件

elasticsearch.username: "elastic"
elasticsearch.password: "elastic"

这个地方的密码就是使用的上面步骤中初始化的密码

1.4 header插件访问

http://192.168.64.129:9100/?auth_user=elastic&auth_password=elastic

其中访问header插件的时候就必须在请求的后面加上用户名和密码

image.png