设为首页 收藏本站
查看: 1241|回复: 0

[经验分享] 单机上启动多个elasticsearch实例

[复制链接]

尚未签到

发表于 2019-1-29 07:30:43 | 显示全部楼层 |阅读模式
  使用elasticsearch的默认配置的话,一台机器上只能启动一个elasticsearch实例,下面是配置多实例的过程。
1.环境介绍
操作系统:centos7
elasticsearch版本:5.6.1
启动实例个数:2个
elasticsearch安装方式:使用官方yum源,yum安装。
2.elasticsearch配置
2.1 配置目录结构
[root@localhost 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节点的配置文件内容
[root@localhost 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节点的启动文件内容
[root@localhost 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节点的启动文件内容
[root@localhost 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”就可以了。




运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-668894-1-1.html 上篇帖子: elasticsearch相关资料 下篇帖子: Elasticsearch文章介绍
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表