标签:linu sudoers ipv4 文档 logs tail 总结 address nod
首先我已经安装好了jdk1.8的环境并成功解压,并打算用./bin/elasticsearch这个命令把elasticsearch跑起来,然后我遇到了第一个问题。
第一个问题的提示是:
Java HotSpot(TM) 64-Bit Server VM warning: INFO:
os::commit_memory(0x0000000085330000, 2060255232, 0) failed;
error='Cannot allocate memory' (errno=12)
由于elasticsearch6.7.0默认分配jvm空间大小为2g,修改jvm空间分配为512m
#vim config/jvm.options
-Xms2g
-Xmx2g
修改为
-Xms512m
-Xmx512m
第二个问题的提示是:
[WARN ][o.e.b.ElasticsearchUncaughtExceptionHandler] [node-1]
uncaught exception in thread [main]
org.elasticsearch.bootstrap.StartupException: java.lang.RuntimeException
: can not run elasticsearch as root
提示我不能以root身份启动,所以创建一个新用户wys
[root@localhost ~]# adduser wys
个人用户只可以在本home下有完整权限,其他目录要看别人授权。而我们经常需要root用户的权限,这时候可以用sodo化身root来操作。我记得我曾经sudo创建了文件,然后发现自己并没有读写权限,因为查看权限是root创建的。
新创建的用户并不能使用sudo命令,需要给他添加授权。
sudo命令的授权管理在sudoers文件中的。
[root@localhost ~]# sudoers
bash: sudoers: 未找到命令...
[root@localhost ~]# whereis sudoers
sudoers: /etc/sudoers /etc/sudoers.d /usr/libexec/sudoers.so /usr/share/man/man5/sudoers.5.gz
找到这个文件位置之后再查看权限:
[root@localhost ~]# ls -l /etc/sudoers
-r--r----- 1 root root 4251 9月 25 15:08 /etc/sudoers
是的,只有只读的权限,如果想要修改的话,需要先添加w权限:
[root@localhost ~]# chmod -v u+w /etc/sudoers
mode of "/etc/sudoers" changed from 0440 (r--r-----) to 0640 (rw-r-----)
然后就可以添加内容了,在下面的一行下追加新增的用户:
[root@localhost ~]# vim /etc/sudoers
## Allow root to run any commands anywher
root ALL=(ALL) ALL
wys ALL=(ALL) ALL #这个是新增的用户
wq保存退出,这时候要记得将写权限收回:
[root@localhost ~]# chmod -v u-w /etc/sudoers
mode of "/etc/sudoers" changed from 0640 (rw-r-----) to 0440 (r--r-----)
第一次使用会提示你,你已经化身超人,身负责任。而且需要输入密码才可以下一步。如果不想需要输入密码怎么办,将最后一个ALL修改成NOPASSWD: ALL。
好了,我终于以新建用户wys的身份把elasticsearch终于运行起来了,但我用外网的ip访问时(即用我的笔记本上的浏览器访问部署在阿里云上的elasticsearch),却没能成功。
解决方法:修改绑定的IP地址
在默认情况下,ES只允许本地访问api接口,如果我们希望在另外一台机器上访问ES的接口的话,需要配置主机地址:
[wys@localhost bin]$ vim elasticsearch-6.7.0/config/elasticsearch.yml
找到如下行:
# Set the bind address to a specific IP (IPv4 or IPv6):
#
# network.host: 192.168.1.1
去掉network.host的注释,改成0.0.0.0
# Set the bind address to a specific IP (IPv4 or IPv6):
#
network.host: 0.0.0.0
之后看到又报错了:
max file descriptors [4096] for elasticsearch process likely too low, increase to at least [65536]
这个是linux下常见的错误,主要是因为linux会限制进程的最大打开文件数,只需要简单配置一下即可解决,在ES的官方文档中提供了两种解决方案。
这里我们只看系统基本的配置这种方式。
打开/etc/security/limits.conf
添加如下配置
#* soft core 0
#* hard rss 10000
#@student hard nproc 20
#@faculty soft nproc 20
#@faculty hard nproc 50
#ftp hard nproc 0
#@student - maxlogins 4
wys - nofile 65536 # add this line
# End of file
保存即可。
这里的wys是用户名,表明这个配置只对wys用户生效,如果你用来启动elasticsearch的用户名不是这个,那么你需要按你实际的用户名修改。
第二处修改:
max virtual memory areas vm.max_map_count [65530] likely too low, increase to at least [262144]
这个是ES使用的虚拟内存,官方文档给出了解决方案:
[wys@localhost bin]$ sudo sysctl -w vm.max_map_count=262144
调大虚拟内存即可。
重新启动,就可以正常访问了,现在我们可以在任何机器上访问ES了。
也可以用后台进程的方式启动:
[wys@localhost bin]$ ./elasticsearch -d -p pid
参考
标签:linu sudoers ipv4 文档 logs tail 总结 address nod
原文地址:https://www.cnblogs.com/wyslkl/p/10630070.html