以下内容是个人的随手记录,就是介绍了下简单的使用;
欢迎大家吐槽,接下来就是激情的时刻,准备好啤酒饮料矿泉水,开整!!!
elasticsearch集群搭建
- 搭建环境Ubuntu18.04
- 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
# 如果遇到phantomjs-prebuilt@2.1.16报错,请忽略掉
npm install phantomjs-prebuilt@2.1.16 --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
注意:以上内容是个人使用的随手记录, 就是介绍了下简单的使用
欢迎大家来吐槽,准备好瓜子饮料矿泉水,开整!!!
---------------------------------------------------------------------------------------