文章目录
踩坑
网络访问问题
客户端一直访问不到服务端。原因是我之前在学tcp的时候,我对那台服务端的机器做过实验,避免time_wait过多,我修改过内核参数,改回来后,就没事了
只有主从关闭方才会出现timewait
状态,如果服务端执行了主动关闭就可能会产生大量timewait的问题,可以修改内核参数,net.ipv4.tcp_tw_reuse
和tcp_timestamps
,把net.ipv4.tcp_tw_reuse
这个参数开启后,就可以复用处于timewait的socket连接,net.ipv4.tcp_tw_reuse
要慎用,因为使用了它就必然要打开时间戳的支持 net.ipv4.tcp_timestamps
,当客户端与服务端主机时间不同步时,客户端的发送的消息会被直接拒绝掉。
Nginx端口占用的问题
Nginx启动的时候优雅重启启动失败,然后我使用nginx直接启动试了一下看报错信息是80端口被占用
[root@iZwz9hcv43i3gmo6zod6srZ local]# nginx -s reload
nginx: [error] open() "/run/nginx.pid" failed (2: No such file or directory)
[root@iZwz9hcv43i3gmo6zod6srZ local]# nginx
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
然后使用netstat -tulnp | grep 80发现是httpd在占用端口,说明我之前装了Apache,然后把它的端口改掉,或者先停止Apache服务就行。
使用ansible的时候如果想在去keepalived官网下keepalived,如果使用COMMAND模块去写,虽然也行,但是他会输出警告信息,告诉我们应该使用get_url,官方就是建议我们这么做的。
nginx做代理时,后端访问很慢
ansible触发器
在写ansible触发器的时候,我执行的时候执行成功了,但是发现渲染配置文件的时候,有个地方(server_name)那里写的不对,然后我改了一下,再重新运行剧本,发现他报错说我的这个触发器找不到,其实是因为之前已经运行过一次了,我把触发器改名字,然后运行就可以了,但是好像在roles才有这个问题,我直接写playbook没有遇到这个问题,然后我去handles目录和tasks目录改了一下触发器的名字,就成功了
docker拉取仓库的时候显示TLS握手超时
ssh连接
在使用ansible的时候,我给被控节点分配公钥文件的时候,发现遇到这个报错,这是因为他们known_hosts之前就有了
zabbix服务端没有启动
在zabbix web界面上有提示说zabbix server没有正常启动,然后我登录服务器是要journalctl -xe查看,
然后关掉防火墙,就OK了
es问题
es启动后,又自动关闭了
经过查看日志后,发现是jdk版本的问题,然后使用yum升级了版本,重启es,发现正常了
参考:https://ask.csdn.net/questions/1051286
部署elasticsearch的时候
阿里云主机上查看节点有时候可以返回信息,有时候返回一串json信息(error),并且响应非常慢
[root@lvs ~]# curl -X GET "10.10.31.8:9200/_cat/indices?v&pretty"
curl: (7) Failed connect to localhost:9200; Connection refused
查看es节点健康信息,明明es已经开启,但是查看不了
[root@iZwz9hcv43i3gmo6zod6srZ etc]# systemctl status elasticsearch
● elasticsearch.service - Elasticsearch
Loaded: loaded (/usr/lib/systemd/system/elasticsearch.service; disabled; vendor preset: disabled)
Active: active (running) since Sun 2020-05-10 20:45:25 CST; 7s ago
Docs: http://www.elastic.co
Main PID: 1692 (java)
CGroup: /system.slice/elasticsearch.service
├─1692 /bin/java -Xms1g -Xmx1g -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -Des.networkaddress.cache.ttl=60 -Des.networkaddress.cache.negat...
└─1757 /usr/share/elasticsearch/modules/x-pack-ml/platform/linux-x86_64/bin/controller
May 10 20:45:25 iZwz9hcv43i3gmo6zod6srZ systemd[1]: Started Elasticsearch.
[root@iZwz9hcv43i3gmo6zod6srZ etc]# curl -i -XGET http://127.0.0.1:9200/_cluster/health?pretty
curl: (7) Failed connect to 127.0.0.1:9200; Connection refused
然后我多次尝试都没有效果,然后再次查看es服务的状态,发现是fail,难道是自动关闭了吗
[root@iZwz9hcv43i3gmo6zod6srZ etc]# systemctl status elasticsearch
● elasticsearch.service - Elasticsearch
Loaded: loaded (/usr/lib/systemd/system/elasticsearch.service; disabled; vendor preset: disabled)
Active: failed (Result: exit-code) since Sun 2020-05-10 20:45:33 CST; 1min 28s ago
Docs: http://www.elastic.co
Process: 1692 ExecStart=/usr/share/elasticsearch/bin/elasticsearch -p ${PID_DIR}/elasticsearch.pid --quiet (code=exited, status=1/FAILURE)
Main PID: 1692 (code=exited, status=1/FAILURE)
May 10 20:45:25 iZwz9hcv43i3gmo6zod6srZ systemd[1]: Started Elasticsearch.
May 10 20:45:33 iZwz9hcv43i3gmo6zod6srZ systemd[1]: elasticsearch.service: main process exited, code=exited, status=1/FAILURE
May 10 20:45:33 iZwz9hcv43i3gmo6zod6srZ systemd[1]: Unit elasticsearch.service entered failed state.
May 10 20:45:33 iZwz9hcv43i3gmo6zod6srZ systemd[1]: elasticsearch.service failed.
然后我发现我重启后,只隔了十多秒,有时候十秒不到,他就会自动关闭,然后我反复确认配置文件有没有改错,发现好像没有大问题,然后分析,有可能是因为es消耗资源太多,被自动关闭了,但是我部署服务从来没有试过这种问题,然后还是top了一下,发现我的阿里云主机es服务的CPU使用率已经达到了将近200%,内存占用也超过了30%,然后再过几秒,在top的界面已经看不到这个进程了,说明真的是因为es消耗资源过大,被系统自动关闭了。
最后查看日志
发现可能是参数配置错了,然后根据它日志的提示,我把这一行注释掉,然后重启,就运行成功了
es节点无法通信的问题
明明有3个节点,但是查看集群节点,却只有1个,首先先看看是不是防火墙问题,关闭防火墙之后,发现正常了,说明是防火墙的问题。然后如果是云主机的话,也会有这个问题
使用docker部署了es,但是在浏览器上访问不了,本地可访问
关闭了所有的防火墙,但是还是不行
后端服务器的访问日志
使用Elastic Stack收集后端服务器的访问日志的时候,发现并不能看到客户端的信息,后面思考了一下,主要是因为配置了反向代理后,web服务器的访问日志是反向代理服务器的访问日志,并不是客户端的访问日志,所以需要在反向代理服务器那里加上proxy_set_header
设置,在响应头上加上对应的客户端的信息,这样才能记录到访问日志