Centos安装Elasticsearch集群

部署步骤

  • 上传解压
  • 在安装目录下创建data和logs目录
mkdir data
mkdir logs
  • 修改配置文件elasticsearch.yml

修改后的每行前面不能有空格,修改后的“:”后面必须有一个空格

主节点配置:

cluster.name: bkm-es
node.name: master
node.master: true
network.host: 192.168.59.134
path.data: /opt/elasticsearch-2.3.4/data
path.logs: /opt/elasticsearch-2.3.4/logs
http.cors.enabled: true
http.cors.allow-origin: '*'
discovery.zen.ping.unicast.hosts: ["192.168.59.134:9300", "192.168.59.135:9300","192.168.59.136:9300"]

 

从节点配置:

cluster.name: bkm-es
node.name: slave1
network.host: 192.168.59.135
path.data: /opt/elasticsearch-2.3.4/data
path.logs: /opt/elasticsearch-2.3.4/logs
http.cors.enabled: true
http.cors.allow-origin: "*"
discovery.zen.ping.unicast.hosts: ["192.168.59.134:9300", "192.168.59.135:9300","192.168.59.136:9300"]

启动,默认http端口9200,如果启动不了,可能是启动用户和文件所有人的问题

#每台进行后台启动
bin/elasticsearch -d

注意问题

  • 需要使用非root账户进行启动:java.lang.RuntimeException: can not runelasticsearch as root
#liunx创建新用户  
adduser XXX    
#然后给创建的用户加密码,输入两次密码
passwd XXX

#切换刚才创建的用户 su XXX  然后执行elasticsearch  会显示Permission denied 权限不足
#用root用户登录付权限
chmod 777 /你的elasticsearch安装目录。

#root给XXX赋权限
chown -R XXX /你的elasticsearch安装目录。
  • 普通用户提权

#使用root用户添加文件的写权限。也就是输入命令
chmod u+w /etc/sudoers

#编辑/etc/sudoers文件
vim /etc/sudoers
root ALL=(ALL) ALL在起下面添加"xxx ALL=(ALL) ALL"(这里的xxx是你的用户名)

#撤销文件的写权限。也就是输入命令"chmod u-w /etc/sudoers"。
  • JVM虚拟机内存不足:JavaHotSpot(TM) 64-Bit Server VM warning: INFO: error='Cannotallocate memory' (errno=12)

       表示内存不足,其配置文件为config目录下的jvm.options,默认为2g,可以修改为1g。

  • max_map_count过小:max virtual memory areas vm.max_map_count [65530]is too low, increase to at least [262144]

       max_map_count文件包含限制一个进程可以拥有的VMA(虚拟内存区域)的数量,系统默认是65530,修改成262144。解决方法是修改/etc/sysctl.conf配置文件,添加vm.max_map_count=262144,需要重启机器才起作用(shutdown -r now 立刻重启(root用户使用))

  • max_file descriptors过小:max file descriptors [65535] for elasticsearchprocess is too low, increase to at least [65536]

       maxfile descriptors为最大文件描述符,设置其大于65536即可。解决方法是修改/etc/security/limits.conf文件,添加“* - nofile65536 * - memlock unlimited”,“*”表示给所有用户起作用

Centos安装Elasticsearch集群_第1张图片

  • 虚拟机本机能访问,其他主机不能访问

       修改elasticsearch.yml中network.host为本机ip 默认绑定127.0.0.1 本机访问,远程访问需修改绑定IP如:192.168.59.134

elasticsearch配置简介

  • cluster.name: elasticsearch

         配置elasticsearch的集群名称,默认是elasticsearch。elasticsearch会自动发现在同一网段下的集群名为elasticsearch的主机,如果在同一网段下有多个集群,就可以用这个属性来区分不同的集群。生成环境时建议更改。

  • node.name: “node-1”

       节点名,默认随机指定一个name列表中名字,该列表在elasticsearch的jar包中config文件夹里name.txt文件中,其中有很多作者添加的有趣名字,大部分是漫威动漫里面的人物名字。生成环境中建议更改以能方便的指定集群中的节点对应的机器

  • node.master: true

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

  • node.data: true

        指定该节点是否存储索引数据,默认为true。如果节点配置node.master:false并且node.data: false,则该节点将起到负载均衡的作用

  • index.number_of_shards: 5

        设置默认索引分片个数,默认为5片。经本人测试,索引分片对ES的查询性能有很大的影响,在应用环境,应该选择适合的分片大小。

  • index.number_of_replicas:

         设置默认索引副本个数,默认为1个副本。此处的1个副本是指index.number_of_shards的一个完全拷贝;默认5个分片1个拷贝;即总分片数为10。

  • path.conf: /path/to/conf

        设置配置文件的存储路径,默认是es根目录下的config文件夹。

  • path.data:/path/to/data1,/path/to/data2

        设置索引数据的存储路径,默认是es根目录下的data文件夹,可以设置多个存储路径,用逗号隔开。

  • path.logs: /path/to/logs

        设置日志文件的存储路径,默认是es根目录下的logs文件夹

  • path.plugins: /path/to/plugins

       设置插件的存放路径,默认是es根目录下的plugins文件夹

  • bootstrap.memory_lock: true

          设置为true来锁住内存。因为当jvm开始swapping时es的效率会降低,所以要保证它不swap,可以把ES_MIN_MEM和ES_MAX_MEM两个环境变量设置成同一个值,并且保证机器有足够的内存分配给es。同时也要允许elasticsearch的进程可以锁住内存,linux下可以通过ulimit -l unlimited命令。

  • network.host: 192.168.0.1

       这个参数是用来同时设置bind_host和publish_host上面两个参数。

  • http.port: 9200

        设置对外服务的http端口,默认为9200。

  • gateway.recover_after_nodes: 1

        设置集群中N个节点启动时进行数据恢复,默认为1。

  • discovery.zen.minimum_master_nodes: 1

       设置这个参数来保证集群中的节点可以知道其它N个有master资格的节点。默认为1,对于大的集群来说,可以设置大一点的值(2-4)

  • discovery.zen.ping.timeout: 3s

        设置集群中自动发现其它节点时ping连接超时时间,默认为3秒,对于比较差的网络环境可以高点的值来防止自动发现时出错。

  • discovery.zen.ping.multicast.enabled:false

        设置是否打开多播发现节点,默认是true。

  • discovery.zen.ping.unicast.hosts: [“host1”, “host2:port”]

         设置集群中master节点的初始列表,可以通过这些节点来自动发现新加入集群的节点。

  • http.cors.enabled

         是否允许跨源 REST 请求。

  • http.cors.allow-origin

         跨域访问规则

head插件安装

https://blog.csdn.net/xzwspy/article/details/78386415

你可能感兴趣的:(Elasticsearch)