安装ES集群
1,拷贝出一份解压出来的文件
cp -r elasticsearch-5.6.4 elasticsearch-n1
2,修改配置文件
vi elasticsearch.yml
配置文件内容如下:
node.name: node-01
node.master: true
node.data: true
network.host: 192.168.112.141
http.port: 9201
transport.tcp.port: 9301
discovery.zen.ping.unicast.hosts: ["192.168.112.141:9301","192.168.112.141:9302","192.168.112.141:9300"]
#官方的推荐值是(N/2)+1,如果只有2个节点设为1
discovery.zen.minimum_master_nodes: 2
http.cors.enabled: true
http.cors.allow-origin: "*"
bootstrap.system_call_filter: false
各个字段解释一下:cluster.name集群的名字,node.name当前节点的名字,node.master这个节点可以做mater吗?node.data这个节点可以做数据节点吗?http.port http端口,transport.tcp.port内部通信用的tcp端口,discovery.zen.ping.unicast.hosts集群中所有节点的ip+端口,discovery.zen.minimum_master_nodes集群中master节点的最小数量,http.cors.enabled: true
http.cors.allow-origin: "*"防止跨域
3,修改jvm内存,线上可对该项进行相应的扩大,这里减小,因为虚拟机内存吃紧后,会无情把jvm杀掉
vi jvm.options
将
-Xms2g
-Xmx2g
修改为
-Xms1g
-Xmx1g
4,将n1拷贝一份
cp -r elasticsearch-n1 elasticsearch-n2
5,修改n2的配置文件
vi elasticsearch.yml
配置文件内容如下:
cluster.name: my-es
node.name: node-02
node.master: true
node.data: true
network.host: 192.168.112.141
http.port: 9202
transport.tcp.port: 9302
discovery.zen.ping.unicast.hosts: ["192.168.112.141:9301","192.168.112.141:9302","192.168.112.141:9300"]
#官方的推荐值是(N/2)+1,如果只有2个节点设为1
discovery.zen.minimum_master_nodes: 2
http.cors.enabled: true
http.cors.allow-origin: "*"
bootstrap.system_call_filter: false
6,再将n1拷贝一份
cp -r elasticsearch-n1 elasticsearch-n3
配置文件内容如下:
cluster.name: my-es
node.name: node-03
node.master: false
node.data: true
network.host: 192.168.112.141
http.port: 9200
transport.tcp.port: 9300
discovery.zen.ping.unicast.hosts: ["192.168.112.141:9301","192.168.112.141:9302","192.168.112.141:9300"]
#官方的推荐值是(N/2)+1,如果只有2个节点设为1
discovery.zen.minimum_master_nodes: 1
http.cors.enabled: true
http.cors.allow-origin: "*"
bootstrap.system_call_filter: false
7,删掉n1,n2,n3的data数据,因为是copy过来的,数据中记录了之前的集群,节点信息
cd data
rm -rf *
8,启动n1,n2,n3
表示已经启动成功
9,用head看一下
可见集群很健康,之前单节点的时候是yellow,集群是green
10,因为没有数据,插入几条数据看看集群的分片,以及分片的header。在插入数据之前,观察一下
五角星的是master,怎么选举出来的之后会和大家分享,是想zk的投票呢?还是利用了分布式锁,之后见分晓。现在插入数据
echo "这里是集群的测试111" >> log4.log
这里logstash会遇到一个问题,就是连接不上9200因为我们集群用的ip是192.168.112.141,logstash是通过127.0.0.1连接的,所以需要将logstash.conf文件的hosts修改一下,这里就配置一个,正式上线的时候是要配置多个的,防止master宕机之后,logstash将收集到的日志存不到ES
hosts => "192.168.112.141"
重启logstash,之后,刷新head,发现之前的那个log没有进去,再次
echo "这里是集群的测试111" >> log4.log
刷新head,效果来了
针对上图解释一下:
安装多个logstash
模拟线上多个服务器,日志在各个服务器上,统一收集到ES中,重新开启一个虚拟机,安装logstash
https://www.jianshu.com/p/efd1997a40d6
1,已经安装好了
2,测试一下:
[root@kafka logskafka]# echo "这是kafka这台服务器的日志" >> log1.log
结果收集到了吗?
插入到ES里面了吗?
到这里ELK的集群就已经搭建完毕
望指正,不吝赐教