1-1-2 Elasticsearch部署

最后更新于:2022-04-02 07:41:39

### 基础环境部署 #### 阿里YUM源配置(略) #### 全局JDK 1.8部署 ```shell yum install java-1.8.131 ``` #### 配置系统参数 ##### 配置内存锁 ```shell #追加 /etc/security/limits.conf echo " " >> /etc/security/limits.conf echo "#elasticsearch memlock dinghe add 20170828 " >> /etc/security/limits.conf echo "elasticsearch soft memlock unlimited" >> /etc/security/limits.conf echo "elasticsearch hard memlock unlimited" >> /etc/security/limits.conf ``` ##### 配置文件描述符 ```shell echo " " >> /etc/security/limits.conf echo "#limit dinghe add 20170828 " >> /etc/security/limits.conf echo "* soft nofile 65536" >> /etc/security/limits.conf echo "* hard nofile 65536" >> /etc/security/limits.conf ``` ##### 配置map_counter ```shell echo "#elasticsearch inti dinghe add 20170828" >> /etc/sysctl.conf echo "vm.max_map_count = 262144" >> /etc/sysctl.conf ``` ##### 重启服务器 ### ELK安装(RPM安装、强烈推荐) ```shell rpm -ivh elasticsearch-5.5.0.rpm #修改用户shell usermod elasticsearch -s /bin/bash #5.5版本的rpm安装会出现变量找到到(oracle java找不到)和memlock配置不生效的情况,修改用户shell后或使用openjdk解决 ``` ### 配置Elasticsearch #### 创建用户和基础目录 ```shell mkdir /data/es-data #多磁盘方式mkdir /data/es01,/data/es02 chown -R elasticsearch. /data/es-data ``` 修改相关配置 vim /etc/elasticsearch/elasticsearch.yml ```shell cluster.name: es-cluster node.name: master-1 path.data: /data/es_data/ network.host: 192.168.0.232 http.port: 9200 discovery.zen.ping.unicast.hosts: ["192.168.0.232", "192.168.0.231"] ``` 配置注释 ```shell #集群名称 cluster.name: es-cluster #本节点名称 node.name: master-1 #数据文件位置 path.data: /data/es_data/ #日志位置 path.logs: /app/logs/es #配置绑定IP network.host: 192.168.0.232 #配置服务端口(9300为集群选举使用的端口) http.port: 9200 #使用单播的方式发现集群节点,避免网络波动和云服务器网络限制造成的节点发现失败问题 discovery.zen.ping.unicast.hosts: ["192.168.0.232", "192.168.0.231"] ``` #### 启动ES服务 ```shell #源码包启动 /app/es/bin/elasticsearch systemctl restart elasticsearch ``` ### 安装elasticsearch-head插件 #### Chrome插件方式(推荐) Chrome插件中搜索 elasticsearch head http://pan.baidu.com/s/1slSDvv3 #### 服务模式 ```shell cd /opt git clone git://github.com/mobz/elasticsearch-head.git cd elasticsearch-head/ npm install grunt-cli --registry=https://registry.npm.taobao.org #备注:grunt是Javascrip的构建工具 npm install --registry=https://registry.npm.taobao.org #安装过程中会下载phantomjs-2.1.1-linux-x86_64.tar.bz2,取消下载即可 npm run start ``` 访问elasticsearch-head插件 ```shell open (http://localhost:9100/) ``` #### 错误处理 ##### 错误1(RPM包处理方式):elasticsearch 5.x which: no java in - 安装的jdk 1.8.121,不成功,安装openjava-jdk1.8.131成功 - 或修改elasticsearch用户 usermod elasticsearch -s /bin/bash ##### 错误2:bootstrap.memory_lock: true导致Elasticsearch启动失败问题(RPM安装未解决) ```shell ...略 # allow user 'elasticsearch' mlockall elasticsearch soft memlock unlimited elasticsearch hard memlock unlimited ...略 ERROR: bootstrap checks failed memory locking requested for elasticsearch process but memory is not locked ...略 ``` 解决: ```shell #追加 /etc/security/limits.conf elasticsearch soft memlock unlimited elasticsearch hard memlock unlimited ``` ##### 错误3:max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144] ```shell echo "vm.max_map_count = 262144" >> /etc/sysctl.conf ``` ##### 错误4:Centos 6.x 安装elasticsearch5.2无法启动bug 报错: ```shell ERROR: bootstrap checks failed system call filters failed to install; check the logs and fix your configuration or disable system call filters at your own risk ``` 原因: ```shell 这是在因为Centos6不支持SecComp,而ES5.2.0默认bootstrap.system_call_filter为true进行检测,所以导致检测失败,失败后直接导致ES不能启动。 ``` 解决: ```shell 在elasticsearch.yml中配置bootstrap.system_call_filter为false,注意要在Memory下面: bootstrap.memory_lock: false bootstrap.system_call_filter: false ``` 可以查看issues https://github.com/elastic/elasticsearch/issues/22 ##### 错误5:文件描述符设置太小 报错 ```shell max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536] max number of threads [1024] for user [[elasticsearch] is too low, increase to at least [2048] ``` 解决 编辑limits.conf 文件 ```shell #vim /etc/security/limits.conf * soft nofile 65536 * hard nofile 65536 #Centos6.x修改vim /etc/security/limits.d/90-nproc.conf soft nproc 1024 修改为 soft nproc 2048 sysctl -p ```
';