单机上启动多个elasticsearch实例

使用elasticsearch的默认配置的话,一台机器上只能启动一个elasticsearch实例,下面是配置多实例的过程。
1.环境介绍
操作系统:centos7
elasticsearch版本:5.6.1
启动实例个数:2个
elasticsearch安装方式:使用官方yum源,yum安装。
2.elasticsearch配置
2.1 配置目录结构
[[email protected] etc]# tree /etc/elasticsearch
/etc/elasticsearch
├── elasticsearch-config-9200
│?? ├── elasticsearch.yml
│?? ├── jvm.options
│?? ├── log4j2.properties
│?? └── scripts
├── elasticsearch-config-9201
│?? ├── elasticsearch.yml
│?? ├── jvm.options
│?? ├── log4j2.properties
│?? └── scripts
默认的话,elasticsearch的配置文件放在/etc/elasticsearch目录下。
多实例的话,在/etc/elasticsearch下分别创建elasticsearch-config-9200和elasticsearch-config-9201两个目录,jvm.options根据自身情况修改。
2.2 配置文件内容
2.2.1 9200es节点的配置文件内容
[[email protected] etc]# egrep -v "^$|^#" /etc/elasticsearch/elasticsearch-config-9200/elasticsearch.yml
cluster.name: sfbest-es
node.name: es-7-168-9200
path.data: /home/es-data-9200
path.logs: /var/log/elasticsearch-9200
bootstrap.memory_lock: false
network.host: 0.0.0.0
http.port: 9200
transport.tcp.port: 9300
http.cors.enabled: true
http.cors.allow-origin: ""
node.max_local_storage_nodes: 2 //单机上最大允许运行的es实例个数
discovery.zen.ping.unicast.hosts: ["10.10.10.245","10.10.10.168:9300","10.10.10.168:9301"]
action.destructive_requires_name: true
cluster.routing.allocation.same_shard.host: true //如果是多实例的话,为防止索引分片丢失,需要开启这个参数。
2.2.2 9201es节点的配置文件内容
cluster.name: sfbest-es
node.name: es-7-168-9201
path.data: /home/es-data-9201
path.logs: /var/log/elasticsearch-9201
bootstrap.memory_lock: false
network.host: 0.0.0.0
http.port: 9201
transport.tcp.port: 9301
http.cors.enabled: true
http.cors.allow-origin: "
"
node.max_local_storage_nodes: 2
discovery.zen.ping.unicast.hosts: ["10.10.10.245","10.10.10.168:9300","10.10.10.168:9301"]
action.destructive_requires_name: true
cluster.routing.allocation.same_shard.host: true

注:9200和9201节点的配置文件,区别就是数据存放目录、日志存放目录、服务端口、集群间相互通信的端口不同,其余都一样;数据目录和日志目录都需手动创建,属主数组都是elasticsearch用户。
注:“cluster.routing.allocation.same_shard.host: true”参数的作用,es天生集群特性,用户只管往es集群里存放数据,es主节点会把数据分布到各个节点,目的是为了保证节点宕机后数据不丢失。如果一台机器上起多个es实例的话,因为es集群默认不知道这个机器上有多个es实例,所以可能会出现把本该分散放到多个机器的某些索引分片,都集中放到了这个多实例的机器上,因为es以为这几个多实例是分布在不同的机器上,假如这个多节点的机器宕机,那就可能会造成丢失数据。上面那个参数的作用就是,允许es主节点探测该物理机是不是存在多个实例,如果存在多个实例,则只给这个机器一份独立数据,也就是说es集群存储数据时,会把这些在一台机器上的多个实例当做一个实例来对待。
注:es多实例的好处,因为JVM局限性,es最大分配内存不要超过32G,否则jvm垃圾回收会严重影响性能。es实例最大给32G内存,而物理机内存很大,所以就可以启动多个实例,来提高整个es集群的性能。
3.elasticsearch启动文件修改
3.1 9200es节点的启动文件内容
[[email protected] etc]# egrep -v "^$|^#" /usr/lib/systemd/system/elasticsearch-9200.service
[Unit]
Description=Elasticsearch
Documentation=http://www.elastic.co
Wants=network-online.target
After=network-online.target
[Service]
Environment=ES_HOME=/usr/share/elasticsearch
Environment=CONF_DIR=/etc/elasticsearch/elasticsearch-config-9200
Environment=DATA_DIR=/var/lib/elasticsearch
Environment=LOG_DIR=/var/log/elasticsearch
Environment=PID_DIR=/var/run/elasticsearch-9200
EnvironmentFile=-/etc/sysconfig/elasticsearch
WorkingDirectory=/usr/share/elasticsearch
User=elasticsearch
Group=elasticsearch
ExecStartPre=/usr/share/elasticsearch/bin/elasticsearch-systemd-pre-exec
ExecStart=/usr/share/elasticsearch/bin/elasticsearch \
-p ${PID_DIR}/elasticsearch.pid \
--quiet \
-Edefault.path.logs=${LOG_DIR} \
-Edefault.path.data=${DATA_DIR} \
-Edefault.path.conf=${CONF_DIR}
StandardOutput=journal
StandardError=inherit
LimitNOFILE=65536
LimitNPROC=2048
LimitAS=infinity
LimitFSIZE=infinity
TimeoutStopSec=0
KillSignal=SIGTERM
KillMode=process
SendSIGKILL=no
SuccessExitStatus=143
[Install]
WantedBy=multi-user.target
3.2 9201es节点的启动文件内容
[[email protected] etc]# egrep -v "^$|^#" /usr/lib/systemd/system/elasticsearch-9201.service
[Unit]
Description=Elasticsearch
Documentation=http://www.elastic.co
Wants=network-online.target
After=network-online.target
[Service]
Environment=ES_HOME=/usr/share/elasticsearch
Environment=CONF_DIR=/etc/elasticsearch/elasticsearch-config-9201
Environment=DATA_DIR=/var/lib/elasticsearch
Environment=LOG_DIR=/var/log/elasticsearch
Environment=PID_DIR=/var/run/elasticsearch-9201
EnvironmentFile=-/etc/sysconfig/elasticsearch
WorkingDirectory=/usr/share/elasticsearch
User=elasticsearch
Group=elasticsearch
ExecStartPre=/usr/share/elasticsearch/bin/elasticsearch-systemd-pre-exec
ExecStart=/usr/share/elasticsearch/bin/elasticsearch \
-p ${PID_DIR}/elasticsearch.pid \
--quiet \
-Edefault.path.logs=${LOG_DIR} \
-Edefault.path.data=${DATA_DIR} \
-Edefault.path.conf=${CONF_DIR}
StandardOutput=journal
StandardError=inherit
LimitNOFILE=65536
LimitNPROC=2048
LimitAS=infinity
LimitFSIZE=infinity
TimeoutStopSec=0
KillSignal=SIGTERM
KillMode=process
SendSIGKILL=no
SuccessExitStatus=143
[Install]
WantedBy=multi-user.target

注:9200和9201的启动文件内,修改es配置文件目录和pid存放目录,这两个目录都需要手动创建,属主数组都是elasticsearch用户。

4.启动es多实例
systemctl enable elasticsearch-9200 && systemctl enable elasticsearch-9201

systemctl restart elasticsearch-9200 && systemctl restart elasticsearch-9201
启动后查看es实例日志,没有error就是启动成功了。
5.其它
这一段是为了提醒自己不要忘记配置的,各位也了解了解吧。

yum安装的话,用root用户执行systemctl start elasticsearch也是以elasticsearch这个用户来运行elasticsearch,而elasticsearch用户默认没有锁内存的权限,同时修改最大描述符限制,所以需要在/etc/security/limits.conf 里加入以下内容:

  • soft nofile 1024000
  • hard nofile 1024000
    hive - nofile 1024000
    hive - nproc 1024000

elasticsearch soft memlock unlimited
elasticsearch hard memlock unlimited
在/etc/sysctl.conf里加入一下内容:
vm.max_map_count=655360(默认的65535 es会报不够用)

按上面的修改后,启动es还是报这个错,重启系统应该可行,但是没试。
实际解决办法:
官网给出的办法是,要避免使用swap,可以使用以下三种方式:
?swapoff -a
?vm.swappiness = 1
?bootstrap.mlockall: true
我选择了关闭swap,即“swapoff -a”,并把它加入到/etc/rc.local。所以如果“bootstrap.memory_lock: true”这个参数用不了,而又不是特别依赖swap分区,可以关闭swap分区,然后“bootstrap.memory_lock: false”就可以了。

原文地址:http://blog.51cto.com/10546390/2066815

时间: 2024-12-06 19:33:01

单机上启动多个elasticsearch实例的相关文章

在单机上启动多个mysql实例

环境:win8,cygwin64,mysql5.6.17 通过该操作了解mysql的配置文件读取,以及一些相应文件的作用 1.创建配置文件myinstance2.ini,其内配置为[mysqld]basedir=/usr/local/mysqldatadir=/cygdrive/d/temp1/myinstance2/dataport=3312server_id=101socket=/var/lib/mysql/mysql_instatnce2.sockpid-file= mysql_insta

在单机上安装多个oracle实例

1   在 hp unix上安装 oracle 10g ,这个不解释,直接安装好. 创建组oinstall,dba,用户oracle  [[email protected] ~]# groupadd oinstall  [[email protected] ~]# groupadd dba  [[email protected] ~]# useradd -d /home/oracle -g oinstall -G dba oracle    设置oracle用户密码  [[email prote

redis实现单机运行多端口、多实例

redis 程序运行过程并不会消耗太多的 CPU 和 IO 资源(主要消耗memory),如是在单台机器上如果只启用一个redis实例会造成资源浪费 .同时为了增加可用性,一般也不会在单机上只运行一个redis实例,本篇就介绍下,如何在单上运行多个 redis 实例(运行在不同端口). 一.redis-server的安装 由于我现网的机器使用的是ubuntu系统,所以这里就以ubuntu为例,可以直接使用apt源安装redis-server $ sudo apt-get install redi

Android应用程序在某些机型上启动有几率一直黑屏

============问题描述============ 我们使用Mono for Android开发了一个App,发现在某些机型上(比如lenovo A3000-H)会打开会出现一直黑屏的情况,进不到程序的界面(同样也定位不到任何调试断点),而有些机型则不会. 通过仔细观察,发现在后台"当前运行程序"一栏,当成功启动时,程序所占体积是21mb左右.当启动失败时(一直黑屏),程序所占体积是9mb左右. 另外通过eclipse监控程序启动日志,对比发现了一些不同. 成功启动时的日志 02

同一服务器上运行两个mysql实例

其实没那么复杂,两个mysql实例使用不同的目录存储,使用不同的端口访问,加载不同的配置文件即可实现. 假如有两个MYSQL   A和B MYSQL A为系统标准安装的RPM程序.存储在 /var/lib/mysql  配置文件为 /etc/my.cnf,这没什么特别的什么都不用改. 现在需要运行第二个MYSQL B,这时你就不能RPM了.使用源码包编译安装.指定安装位置为 /usr/local/mysqlb 主要编译参数如下: ./configue –prefix=/usr/local/mys

VM虚拟机下在LINUX上安装ORACLE 11G单实例数据库

VM虚拟机下在LINUX上安装ORACLE 11G单实例数据库 1.环境及安装前规划:虚拟机及OS如下 环境:VMware Wordstation ACE版 6.0.2 操作系统:OracleLinux-R5-U8-Server-i386-dvd    3.2G 安装操作系统,这里需要注意的是磁盘空间要预留足够. 我的规划是: 虚拟机分配1024M内存,当然如果主机内存足够,安装时内存设置2048M可以更快. 虚拟机分配一块磁盘,30G磁盘空间. /boot 100M ext3 /    20G

在一台机器上搭建多个redis实例

默认Redis程序安装在/usr/local/redis目录下: 配置文件:/usr/local/redis/redis.conf,该配置文件中配置的端口为默认端口:6379: Redis的启动命令路径:/usr/local/bin/redis-server. 可以指定端口启动多个Redis进程. #/usr/local/bin/redis-server --port 6380 &    #启动6380端口的redis实例. ====================以下每个进程对应一个配置文件(

Windows上安装多个MySQL实例(转)

在学习和开发过程中有时候会用到多个MySQL数据库,比如Master-Slave集群.分库分表,开发阶段在一台机器上安装多个MySQL实例就显得方便不少. 在 MySQL教程-基础篇-1.1-Windows上安装MySQL 章节有详细讲解在Windows上用压缩包安装MySQL服务器的方法,这里以此为基础讲解在Windows上安装多个MySQL服务器的方法. 第一步:将压缩包分别解压缩到不同的目录下. 我自已在已安装好一个MySQL实例后又额外安装了3个MySQL实例,它们的路径如下: C:\P

Oracle_lhr_CentOS 7.3 ECS上搭建RAC 18c+单实例DG+EMCC+DG

Oracle_lhr_CentOS 7.3 ECS上搭建RAC 18c+单实例DG+EMCC+DG的FSFO快速故障转移配置 [大型连续免费公开课]Oracle 18c rac+dg+13.3的emcc部署配置(2018年最后一次免费公开课) 报名连接:https://ke.qq.com/course/315575 讲师:小麦苗 预计课时:6课时 开课时间:11月9日20点 相关软件下载地址:https://share.weiyun.com/57HUxNi 听课福利: 1.获得讲课文档pdf和课