因为项目需要,在开发和测试环境搭建了一套es伪集群,用于不同环境测试。大致过程就是在一台服务器上,部署安装3套es服务,下面是shell命令。
#创建目录与3个es node目录
[root@Server1d237 ~]# mkdir /home/es
[root@Server1d237 ~]# mkdir /home/es/node1 /home/es/node2 /home/es/node3
# 将压缩包scp到服务器
[root@Server1d110 ~]# scp /Downloads/elasticsearch-7.7.1-linux-x86_64.tar.gz root@192.168.1.237:/home/es
#使用root账号解压es压缩包
[root@Server1d237 ~]# cd /home/es/node1/
[root@Server1d237 ~]# tar -zxvf elasticsearch-7.7.1-linux-x86_64.tar.gz
#修改es配置文件
[root@Server1d237 ~]# cd /home/es/node1/elasticsearch-7.7.1/
[root@Server1d237 ~]# vim config/elasticsearch.yml
#下面是3个node的yml文件配置,大同小异
#这是node1的配置,在elasticsearch.yml 中添加如下配置
cluster.name: es-cluster # 集群名称
node.name: node-1 # 节点名称,每个机器的节点名称不能相同
node.master: true #是否是master节点
node.data: true #是否允许该节点存储索引数据
network.host: 0.0.0.0 # 监听地址
http.port: 9201 # 配置es绑定主机的ip地址,可以设置为当前实际的ip,如果有多个网卡都想绑定的话,可以设置为:0.0.0.0
transport.port: 9301 # tcp的端口号,默认是9300
discovery.seed_hosts: ["192.168.1.237:9301", "192.168.1.237:9302","192.168.1.237:9303"] # 配置集群中的主机列表,通信使用的端口为transport.port 配置的tcp 端口
cluster.initial_master_nodes: ["node-1", "node-2"] # 配置启动全新的集群时,那些节点可以作为master节点进行选票
http.cors.enabled: true #是否开启跨域访问
http.cors.allow-origin: "*" #开启跨域访问后的地址限制,*表示无限制
bootstrap.memory_lock: false
bootstrap.system_call_filter: false
#这是node2的配置,在elasticsearch.yml 中添加如下配置
cluster.name: es-cluster # 集群名称
node.name: node-2 # 节点名称,每个机器的节点名称不能相同
node.master: true #是否是master节点
node.data: true #是否允许该节点存储索引数据
network.host: 0.0.0.0 # 监听地址
http.port: 9202 # 配置es绑定主机的ip地址,可以设置为当前实际的ip,如果有多个网卡都想绑定的话,可以设置为:0.0.0.0
transport.port: 9302 # tcp的端口号,默认是9300
discovery.seed_hosts: ["192.168.1.237:9301", "192.168.1.237:9302","192.168.1.237:9303"] # 配置集群中的主机列表,通信使用的端口为transport.port 配置的tcp 端口
cluster.initial_master_nodes: ["node-1", "node-2"] # 配置启动全新的集群时,那些节点可以作为master节点进行选票
http.cors.enabled: true #是否开启跨域访问
http.cors.allow-origin: "*" #开启跨域访问后的地址限制,*表示无限制
bootstrap.memory_lock: false
bootstrap.system_call_filter: false
#这是node3的配置,在elasticsearch.yml 中添加如下配置
cluster.name: es-cluster # 集群名称
node.name: node-3 # 节点名称,每个机器的节点名称不能相同
node.master: true #是否是master节点
node.data: true #是否允许该节点存储索引数据
network.host: 0.0.0.0 # 监听地址
http.port: 9203 # 配置es绑定主机的ip地址,可以设置为当前实际的ip,如果有多个网卡都想绑定的话,可以设置为:0.0.0.0
transport.port: 9303 # tcp的端口号,默认是9300
discovery.seed_hosts: ["192.168.1.237:9301", "192.168.1.237:9302","192.168.1.237:9303"] # 配置集群中的主机列表,通信使用的端口为transport.port 配置的tcp 端口
cluster.initial_master_nodes: ["node-1", "node-2"] # 配置启动全新的集群时,那些节点可以作为master节点进行选票
http.cors.enabled: true #是否开启跨域访问
http.cors.allow-origin: "*" #开启跨域访问后的地址限制,*表示无限制
bootstrap.memory_lock: false
bootstrap.system_call_filter: false
#修改系统配置
[root@Server1d237 ~]# vim /etc/security/limits.conf
* hard nofile 65536 # es要求文件数最小为65536
* soft nproc 2048
* hard nproc 4096
* soft memlock unlimited
* hard memlock unlimited
#修改系统配置
[root@Server1d237 ~]# vim /etc/sysctl.conf
vm.max_map_count=655360 # 限制一个进程可以拥有的VMA(虚拟内存区域)的数量
fs.file-max=655360 # 系统级打开最大文件句柄的数量永久生效的修改
#让系统配置生效
[root@Server1d237 ~]# sysctl -p
#创建用户\切换用户
#因为es7不能使用root账户来启动es服务,所以需要创建一个用户,或者切换成一个非root用户
[root@Server1d237 ~]# adduser admin
#输入两次密码
[root@Server1d237 ~]# passwd admin
#将对应的文件夹权限赋给该用户
[root@Server1d237 ~]# chown -R admin elasticsearch-7.7.1
#切换成你刚创建的用户,非root用户
[root@Server1d237 ~]# su admin
#启动es服务
[root@Server1d237 ~]# ./bin/elasticsearch -d
#测试es服务是否可用
http://192.168.1.237:9201/
#查看集群状态
http://192.168.1.237:9201/_cat/health?v
注意:
- 启动es必须要非root账户才可以
- 安装目录最好是在/home/目录下
总的来说es的伪集群安装还是很简单的,一步步操作就可以了,真集群的部署可以参考我的另一篇博客:ElasticSearch 7.7.1 集群+Kibana 7.7.1安装