Elasticsearch集群环境部署并发布

1,添加host文件, 使可以通过主机名访问

es-0001主机更改/etc/hosts
[root@es-0001 ~]# vim /etc/hosts
192.168.1.71 es-0001
192.168.1.72 es-0002
192.168.1.73 es-0003
192.168.1.74 kibana
192.168.1.75 logstash

将最新的/etc/hosts配置文件更新到所有的云主机上
[root@es-0001 ~]# scp /etc/hosts 192.168.1.72:/etc
[root@es-0001 ~]# scp /etc/hosts 192.168.1.73:/etc
[root@es-0001 ~]# scp /etc/hosts 192.168.1.74:/etc
[root@es-0001 ~]# scp /etc/hosts 192.168.1.75:/etc

 

2,将下载好的软件包(有关于elk相关的软件包)上传到 localrepo, 并更新yum源

[root@ecs-proxy ~]# mkdir /var/ftp/localrepo/elk
[root@ecs-proxy ~]# ls /var/ftp/localrepo/elk/
elasticsearch-6.8.8.rpm head.tar.gz logs.jsonl.gz metricbeat-6.8.8-x86_64.rpm
filebeat-6.8.8-x86_64.rpm kibana-6.8.8-x86_64.rpm logstash-6.8.8.rpm
[root@ecs-proxy ~]# createrepo --update /var/ftp/localrepo/


3,集群安装配置,安装基础环境软件

es-0001,es-0002,es-0003检查yum源,确定可以使用
[root@es-0001 ~]# cat /etc/yum.repos.d/local.repo
[local_repo]
name=CentOS-$releasever – Localrepo
baseurl=ftp://192.168.1.252/localrepo
enabled=1
gpgcheck=0

[root@es-0001 ~]# scp /etc/yum.repos.d/local.repo 192.168.1.72:/etc/yum.repos.d
[root@es-0001 ~]# scp /etc/yum.repos.d/local.repo 192.168.1.73:/etc/yum.repos.d
[root@es-0001 ~]# scp /etc/yum.repos.d/local.repo 192.168.1.74:/etc/yum.repos.d
[root@es-0001 ~]# scp /etc/yum.repos.d/local.repo 192.168.1.75:/etc/yum.repos.d

#检测JDK环境安装是否成功
[root@es-0001 ~]# yum -y install java-1.8.0-openjdk-devel
[root@es-0002 ~]# yum -y install java-1.8.0-openjdk-devel
[root@es-0003 ~]# yum -y install java-1.8.0-openjdk-devel
[root@kibana ~]# yum -y install java-1.8.0-openjdk-devel
[root@logstash ~]# yum -y install java-1.8.0-openjdk-devel
[root@es-0001 ~]# java -version
openjdk version "1.8.0_252"
OpenJDK Runtime Environment (build 1.8.0_252-b09)
......


4,es-0001,es-0002,es-0003安装elasticserach

[root@es-0001 ~]# yum -y install elasticsearch
配置es-0001
[root@es-0001 ~]# vim /etc/elasticsearch/elasticsearch.yml
cluster.name: es #17行,集群的名称。
node.name: es-0001 #23行,该节点主机名。
network.host: 192.168.1.71 #55行,该节点主机的IP地址。
http.port: 9200 #59行,对外服务的http端口。
discovery.zen.ping.unicast.hosts: ["es-0001", "es-0002", "es-0003"] #68行,集群节点主机列表
discovery.zen.minimum_master_nodes: 2 #72行,最少主节点数。
[root@es-0001 ~]# systemctl enable --now elasticsearch
[root@es-0001 ~]# systemctl status elasticsearch
配置es-0002
[root@es-0002 ~]# vim /etc/elasticsearch/elasticsearch.yml
cluster.name: es #17行,集群的名称。
node.name: es-0002 #23行,该节点主机名。
network.host: 192.168.1.72 #55行,该节点主机的IP地址。
http.port: 9200 #58行,对外服务的http端口。
discovery.zen.ping.unicast.hosts: ["es-0001", "es-0002", "es-0003"] #68行,集群节点主机列表
discovery.zen.minimum_master_nodes: 2 #72行,最少主节点数。
[root@es-0002 ~]# systemctl enable --now elasticsearch
配置es-0003
[root@es-0003 ~]# vim /etc/elasticsearch/elasticsearch.yml
cluster.name: es #17行,集群的名称。
node.name: es-0003 #23行,该节点主机名。
network.host: 192.168.1.73 #55行,绑定的IP地址。
http.port: 9200 #58行,对外服务的http端口。
discovery.zen.ping.unicast.hosts: ["es-0001", "es-0002", "es-0003"] #68行,集群节点主机列表
discovery.zen.minimum_master_nodes: 2 #72行,最少主节点数。
[root@es-0003 ~]# systemctl enable --now elasticsearch

5,查看ES集群信息

[root@ecs-proxy ansible]# curl -XGET http://192.168.1.71:9200/_cluster/health?pretty
{
"cluster_name" : "es",
"status" : "green",
"timed_out" : false,
"number_of_nodes" : 3,
"number_of_data_nodes" : 3,
"active_primary_shards" : 0,
"active_shards" : 0,
"relocating_shards" : 0,
"initializing_shards" : 0,
"unassigned_shards" : 0,
"delayed_unassigned_shards" : 0,
"number_of_pending_tasks" : 0,
"number_of_in_flight_fetch" : 0,


6,安装head插件

ES官方没有为ES提供界面管理工具,仅仅提供了后台服务。elasticsearch-head是一个为ES开发的web页面客户端工具。
head提供了以下安装方式: (本次采用docker容器安装)
A、源码安装,通过npm run start 启动
B、通过docker安装(推荐)
C、通过chrome插件安装


部署插件
由于前后端分离开发,所以会存在跨域问题,需要在服务端做CORS的配置。
(前后端分离:前端所有用到的数据都是后端通过异步接口的方式提供的,前端只管页面的展示及效果。)
在配置文件末尾手动添加以下内容即可
[root@es-0001 ~]# vim /etc/elasticsearch/elasticsearch.yml
http.cors.enabled: true
http.cors.allow-origin: "*"
[root@es-0001 ~]# systemctl restart elasticsearch

将制作好的elasticsearch-head镜像包下载至es-0001的/root/下,之后:
[root@es-0001 ~]# yum -y install docker-ce
[root@es-0001 ~]# systemctl enable --now docker
[root@es-0001 ~]# docker load -i elasticsearch-head.tar
[root@es-0001 ~]# docker run --name es-head -td -p 9100:9100 elasticsearch-head:5914e41f15e9de8873a57e2a53e250231592ed18e635fdd227733e99542f42218
[root@es-0001 ~]# netstat -antpu | grep :9100
tcp6 0 0 :::9100 :::* LISTEN 12971/docker-proxy

 

7,在华为云上发布9100和9200端口!

特别注意:
elasticsearch监听的是9200端口,head插件监听的是9100端口。我们应该将9100和9200全部发不出来才能用公网访问,原因:
1,用户访问head插件的9100端口得到web页面显示,然后用户本身(并不是head通过内网)来连接elasticsearch的9200.

上一篇:数据读写flags选项的使用-MSG_OOB


下一篇:关于软件验证中的单元测试