elasticsearch集群搭建

以下内容是个人的随手记录,就是介绍了下简单的使用;

欢迎大家吐槽,接下来就是激情的时刻,准备好啤酒饮料矿泉水,开整!!!


elasticsearch集群搭建

  1. 搭建环境Ubuntu18.04
  2. elasticsearch 6.4.0

一、服务器配置

服务器IP 服务端口 集群通信端口 是否可以为master节点 是否可以为data存储节点
192.168.1.50 9200 9300 true true
192.168.1.50 9201 9301 true true
192.168.1.50 9202 9302 true true

 

二、环境搭建

- 创建用户及目录
useradd -d /home/elasticsearch es

- 切换至es用户
su es

- 下载elasticsearch6.4.0版本并解压缩
cd /usr/local/src
curl -L -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.4.0.tar.gz 
tar -zxvf elasticsearch-6.4.0.tar.gz

- 复制三份,命名为elasticsearch_node1、elasticsearch_node2、elasticsearch_node3、
cp -rp elasticsearch-6.4.0 elasticsearch_node1
cp -rp elasticsearch-6.4.0 elasticsearch_node2
cp -rp elasticsearch-6.4.0 elasticsearch_node3

- 删除多余的tar包,节省磁盘空间
rm -rf elasticsearch-6.4.0.tar.gz
rm -rf elasticsearch-6.4.0

- 创建data和log目录分别用于放置数据和日志
mkdir -p /data/node{1,2,3}
mkdir -p /data/node{1,2,3}

- 创建pidfile存放的路径
mkdir -p /tmp/pidfile/

三、修改配置搭建集群 

# 配置文件的修改以node1的为例,另外两个只需要修改索引数据及日志文件路径和http端口及tcp端口即可。
- vim /usr/local/src/elasticsearch_node1/config/elasticsearch.yml

#集群的名称
cluster.name: hao-es

#节点名称,其余两个节点分别为node-2 和node-3
node.name: node-1

#指定该节点是否有资格被选举成为master节点,默认是true,es是默认集群中的第一台机器为master,如果这台机挂了就会重新选举master
node.master: true

#允许该节点存储数据(默认开启)
node.data: true

#索引数据的存储路径
path.data: /home/elasticsearch/data/node1

#日志文件的存储路径
path.logs: /home/elasticsearch/log/node1

#设置为true来锁住内存。因为内存交换到磁盘对服务器性能来说是致命的,当jvm开始swapping时es的效率会降低,所以要保证它不swap
bootstrap.memory_lock: true

#绑定的ip地址(0.0.0.0)
network.host: 192.168.1.50

#设置对外服务的http端口,默认为9200
http.port: 9200

# 设置各个节点间交互的tcp端口,默认是9300 
transport.tcp.port: 9300

# Elasticsearch将绑定到可用的环回地址,并将扫描端口9300到9305以尝试连接到运行在同一台服务器上的其他节点。
#这提供了自动集群体验,而无需进行任何配置。数组设置或逗号分隔的设置。每个值的形式应该是host:port或host
#(如果没有设置,port默认设置会transport.profiles.default.port 回落到transport.tcp.port)。
# 请注意,IPv6主机必须放在括号内。默认为127.0.0.1, [::1]
discovery.zen.ping.unicast.hosts: ["192.168.1.50:9300", "192.168.1.50:9301", "192.168.1.50:9302"]

#如果没有这种设置,遭受网络故障的集群就有可能将集群分成两个独立的集群 - 分裂的大脑 - 这将导致数据丢失
discovery.zen.minimum_master_nodes: 1

# 注意:
如果有一个节点: 以下两项配置均为false
node.master: false
node.master: false
则此节点为协调节点、项目使用负载均衡我们需要连接此节点
# 配置文件的修改以node1的为例,另外两个节点一致。
vim /usr/local/src/elasticsearch_node1/config/jvm.options

# 默认是1g官方建议对jvm进行一些修改,不然很容易出现OOM,参考官网改参数配置最好不要超过内存的50% 
# 我的服务器设置的堆栈内存为256m, 可自行更改大小
-Xms256m
-Xmx256m

四、启动和停止elasticsearch服务脚本

vim /usr/local/src/start.sh
# 其中-d表示后台运行,-p指定进城pidfile文件的存放路径:
/usr/local/src/elasticsearch_node1/bin/elasticsearch -d -p /tmp/pidfile/node1
/usr/local/src/elasticsearch_node2/bin/elasticsearch -d -p /tmp/pidfile/node2
/usr/local/src/elasticsearch_node3/bin/elasticsearch -d -p /tmp/pidfile/node3

vim /usr/local/src/stop.sh
ps aux | grep elasticsearch | grep -v grep | awk '{print $2}' | xargs kill -9

# 授权sh脚本
chmod 755 start.sh stop.sh

# 启动脚本
./start.sh

# 停止脚本
./stop.sh

# 查看日志,服务启动是否报错
tail -f /data/log/node1/hao-es.log
tail -f /data/log/node2/hao-es.log
tail -f /data/log/node3/hao-es.log

五、调用API查看节点状态

curl -XGET 'http://192.168.1.50:9200/_cat/nodes?pretty'

 

六、使用elasticsearch-head查看集群状态

# 安装nodejs

mkdir -p /usr/local/src/nodejs

cd /usr/local/src/nodejs

wget https://nodejs.org/dist/v10.15.1/node-v10.15.1-linux-x64.tar.xz

tar -xvf node-v10.15.1-linux-x64.tar.xz

cd node-v10.15.1-linux-x64/bin

# 查看二进制文件是否ok
./node -v 

# 将nodejs添加到环境变量
vim /etc/profile

export NODEJS_HOME=/usr/local/src/nodejs/node-v10.15.1-linux-x64
export PATH=$NODEJS_HOME/bin:$PATH
source /etc/profile

# 安装elasticsearch-head

cd /usr/local/src/
git clone https://github.com/mobz/elasticsearch-head.git
cd elasticsearch-head/
npm install

# 如果遇到[email protected]报错,请忽略掉
npm install [email protected] --ignore-scripts

# 启动服务默认的地址是localhost:9100
npm run start 

七、elasticsearch集群搭建成功后启动错误处理

# 错误1
[1]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]

# 错误2
[2]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

# 错误3
ERROR: bootstrap checks failed
memory locking requested for elasticsearch process but memory is not locked

 八、启动错误解决方案

# 第一步: 
vim /etc/security/limits.conf

*           soft    nofile          65536
*           hard    nofile          65536
*           soft    nproc           65536
*           hard    nproc           65536
*           soft    memlock         unlimited
*           hard    memlock         unlimited

# 第二步:
vim /etc/sysctl.conf

vm.max_map_count=655360
vm.swappiness=0

# 第三步使配置生效有两种方式:
3.1 使配置生效: 
切换至root用户然后前换回当前用户
su
su es
sudo sysctl -p

3.1.1 查看配置是否生效、全部都是65536则配置生效
ulimit -Hn
ulimit -Sn

3.2 重启服务器使配置生效: 
reboot

 


注意:以上内容是个人使用的随手记录, 就是介绍了下简单的使用

欢迎大家来吐槽,准备好瓜子饮料矿泉水,开整!!!

---------------------------------------------------------------------------------------

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章