最近工作中为了制作syslog展示功能,于是开始使用ELK,其中elasticsearch作为ELK中数据存储搜索的一环,也就需要配置到生产环境中。然而在安装配置时遇到无数蛋疼蛋碎的问题,这里记录一下方便后续再安装时能有一个参考。
首先我们进入elastic的官网:https://www.elastic.co/cn/,在product中选择elasticsearch,然后点击download进入下载页面
当前系统推荐给我的下载版本是6.1.1,而我需要的版本是5.6.5,因此需要自己选择版本,点击如下链接并选择版本,点击download就可以下载至本地了
很多同学看到安装两字内心肯定是恐惧的,被多个编辑器、数据库安装配置弄得心魂不宁后,遇到任何安装都害怕。然而elasticsearch的简单安装简直是小白级别,只需要两个步骤:
a. 解压
b. 运行
一切就这么简单。这样简单操作后我们就可以运行elasticsearch,但是如果要弄得和生产环境一样,这样做当然不行,还需要配置一些东西。
这里我加压到D:\elastic\中,目录结构如下
打开cmd,然后cd到解压好的elasticsearch目录运行elasticsearch.bat,如下图
由于我们没有改配置文件,所以当前都是系统默认配置,只需要一个节点也能启动,最终出现started则表示elasticsearch已经启动了
我们打开浏览器,输入localhost:9200查看是否运行成功,一般情况下出现如下界面,则表示elasticsearch服务已经打开
这里说一下简单的配置。elasticsearch其实是分布式存储的,但是在Windows环境下,我们一般都是拿着自己的PC机来试玩,所以一般不会有多台物理机的情况,当然我们也不必为了模拟分布式环境而安装虚拟机,只需要对配置文件做一些修改就好。配置文件在elasticsearch目录config目录的elasticsearch.yml中。一下说几个关键部分:
首先为了配置多个节点,我们复制一份elasticsearch环境,类似我这里有两份,分别是elasticsearch-5.6.5-1与elasticsearch-5.6.5-2
然后分别打开两个目录的/config/elasticsearch.yml文件进行如下更改:
a. 修改cluster.name与node.name,其中cluster.name需要一样,因为这是集群名称,名称一样才属于同一个elasticsearch集群;node.name需要不同,这是每一个节点在集群中的名称,我的修改为(我的集群名称为elastic_michael,节点名称分别为elastic_michael_1与elastic_michael_2):
b. 修改path.data与path.logs,分别是elasticsearch数据存储位置与log存放位置,两个节点的存放位置最好不相同,同时最好不要使用默认值,因为默认值会存储在elasticsearch文件中,假如我们删除了elasticsearch,那么数据也就拜拜了,如果有一些重要数据,那么等着GG吧,这里我将两个配置分别修改为:
都配置好了,那打开两个cmd,然后分别执行bin\elasticsearch.bat,坐等成功吧。
说实话windows下面的配置还是比较简单的,接下来就是大头linux配置了。
与window类似,只是用windows机器找到tar的下载文件,并复制链接,用wget 方法下载到linux机器上,我存放在/tmp中。建议用非root用户进行操作,因为后续elasticsearch不允许用root运行,因此下载解压用非root用户避免后续还需要修改文件所属。下载后如下:
a. 将下载下来的文件解压到当前目录:
tar -zxvf elasticsearch-5.6.5.tar.gz将解压后的文件移动到软件存放的目录,由于我的用户的apps,所以我喜欢存放在/apps/svr中:
mv /tmp/elasticsearch-5.6.5 /apps/svr/
这样elasticsearch就算安装好了,但是蛋疼的事情才刚刚开始
我这里准备了两台机器设置集群,ip分别是:10.197.33.5, 10.197.33.6
相同的道理,先更改配置文档:
这样就组成了10.197.33.5与10.197.33.6两台机器,2个master节点的分布式存储elasticsearch。
分别进入elasticsearch/bin目录,.\elasticsearch启动服务,这是开始出现各种报错了:
错误1.
can not run elasticsearch as root问题原因:
elasticsearch 不允许用root账号运行解决办法:
新建一个非root账户,运行elasticsearch。在前面我也提到过,用非root账户下载、解压、安装、配置整个elasticsearch,这样就少了这些烦恼
错误2.
max file descriptors [4096] for elasticsearch process likely too low, increase to at least [65536]
max number of threads [1024] for user [lishang] likely too low, increase to at least [2048]问题原因:
系统限制了用户的最大进程数量,最大文件打开数量,因此我们需要修改系统限制的指解决方法:
进入限制文档:vi /etc/security/limits.conf
添加如下内容:
- soft nofile 65536
- hard nofile 131072
- soft nproc 2048
- hard nproc 4096
a. “*”代表对于所有用户生效
b. soft代表软限制,仅为警告,但是不中断;hard为硬限制,程序执行超过这个数字则被中断
c. nofile为同时打开的文件数量
d. nproc为同时运行进程数量
后面为相应的限制数值后续操作:
退出当前账户并重登
错误3.
max virtual memory areas vm.max_map_count [65530] likely too low, increase to at least [262144]问题原因:
直接看是虚拟内存空间的最大映射数量太小了,至少要设置成262144,其他原因不详=.=解决办法:
切换到root用户修改配置sysctl.conf
vi /etc/sysctl.conf添加下面配置:
vm.max_map_count=655360并执行命令:
sysctl -p
错误4.
max size virtual memory [644245094400] for user [apps] is too low, increase to [unlimited]问题原因:
需要不限制用户的虚拟内存使用解决办法:
切换到root账户
vi /etc/security/limits.conf添加下面配置
* - as unlimited后续操作:
退出当前账户并重登
这是我遇到的问题,若有其他问题,可以自行google
我相信大家并不是需要一直看log,并且保持着自己的ssh不关闭,所以还是后台运行elasticsearch吧:
./elasticsearch -d