
# ALM-25005 Nscd服务异常
#### 告警解释
系统每60秒周期性检测nscd服务的状态，如果连续4次（3分钟）查询不到nscd进程或者无法获取LdapServer中的用户时，产生该告警。
当进程恢复且可以获取LdapServer中的用户时，告警恢复。
#### 告警属性
| 告警ID  | 告警级别 | 是否自动清除 |
|:---|:---|:---|
| 25005 | 重要   | 是      |
   
#### 告警参数
| 参数名称 | 参数含义         |
|:---|:---|
| 来源   | 产生告警的集群名称。   |
| 服务名  | 产生告警的服务名称。   |
| 主机名  | 产生告警的主机节点信息。 |
   
#### 对系统的影响
nscd服务不可用时，可能会影响该节点从LdapServer上同步数据，此时，使用**id**命令可能会获取不到Ldap中的数据，影响上层业务。
#### 可能原因
- nscd服务未启动。
- 网络故障，无法访问Ldap服务器。
- Name Service服务异常。
- OS执行命令慢导致无法查询用户。
 
#### 处理步骤
**检查nscd服务是否启动。**
1. 在FusionInsight Manager界面，选择"运维 \> 告警 \> 告警"。记录该告警定位信息中的"主机名"的IP地址为IP1（若出现多个告警，则分别记录其中的IP地址为IP1、IP2、IP3等）。
2. 联系运维人员，以**root** 用户登录IP1节点，用户密码为安装前用户自定义，请咨询系统管理员，在该节点上执行**ps -ef \| grep nscd** 命令，查看是否有/usr/sbin/nscd进程启动。
   
   ```
   root       6893  12764  0 20:20 pts/2    00:00:00 grep nscd
   root       8480      1  0 Jun13 ?        00:31:49 /usr/sbin/nscd
   ```
   - 是，执行[步骤 5]。
   
   - 否，执行[步骤 3]。
   
   
   
   
3. 以**root** 用户执行**service nscd restart** 命令，重启nscd服务，执行**ps -ef \| grep nscd** 命令，查看服务是否启动。
   
   - 是，执行[步骤 4]。
   
   - 否，执行[步骤 15]。
   
   
   
   
4. 5分钟后，以**root** 用户再次执行命令，查看服务是否存在。
   
   - 是，执行[步骤 11]。
   
   - 否，执行[步骤 15]。
   
   
   
   
**检查网络是否故障，无法访问ldap服务器。**
5. 用**root** 用户登录故障节点，在这个节点上使用**ping** 命令检查该节点与LdapServer节点的网络是否畅通。
   
   - 是，执行[步骤 6]。
   
   - 否，请联系网络管理员，解决网络故障。
   
   
   
   
**检查Name Service服务是否异常。**
6. 用**root** 用户登录故障节点，执行**cat /etc/nsswitch.conf** 命令，查看NameService配置中的"passwd"、"group"、"services"、"netgroup"、"aliases"五项配置是否正确。
   
   正确配置请参照："passwd: compat ldap"、"group: compat ldap"、"services: files ldap"、"netgroup: files ldap"、"aliases: files ldap"。
   - 是，执行[步骤 7]。
   
   - 否，执行[步骤 9]。
   
   
   
   
7. 用**root** 用户登录故障节点，执行**cat /etc/nscd.conf** 命令，查看配置文件中"enable-cache passwd"、"positive-time-to-live passwd"、"enable-cache group"、"positive-time-to-live group"四项配置是否正确。
   
   正确配置请参照： "enable-cache passwd yes "、"positive-time-to-live passwd 600"、"enable-cache group yes"、"positive-time-to-live group 3600"。
   - 是，执行[步骤 8]。
   
   - 否，执行[步骤 10]。
   
   
   
   
8. 用**root** 用户执行**/usr/sbin/nscd -i group** 和**/usr/sbin/nscd -i passwd** 命令，等待2分钟，继续执行**id admin** 和**id backup/manager** 命令，查看是否能查询到结果。
   
   ```
   host07:~ # id admin
   uid=20000(admin) gid=9998(ficommon) groups=9998(ficommon),8000(Manager_administrator_180)
   host07:~ # id backup/manager
   uid=20002(backup/manager) gid=10001(supergroup) groups=10001(supergroup)
   ```
   - 是，执行[步骤 11]。
   
   - 否，执行[步骤 15]。
   
   
   
   
9. 以**root** 用户执行**vi /etc/nsswitch.conf** 命令，将[步骤 6]中的五项配置项改成正确配置，保存后执行**service nscd restart** 命令重启nscd服务，等待2分钟，执行**id admin** 和**id backup/manager** 命令，查看是否能查询到结果。
   
   - 是，执行[步骤 11]。
   
   - 否，执行[步骤 15]。
   
   
   
   
10. 以**root** 用户执行**vi /etc/**nscd**.conf** 命令，将[步骤 7]中的四项配置项改成正确配置，保存后执行**service nscd restart** 命令重启nscd服务，等待2分钟，执行**id admin** 和**id backup/manager** 命令，查看是否能查询到结果。
    
    - 是，执行[步骤 11]。
    
    - 否，执行[步骤 15]。
    
    
    
    
11. 登录FusionInsight Manager界面，等待5分钟，然后查看"Nscd服务异常"告警是否恢复。
    
    - 是，处理完毕。
    
    - 否，执行[步骤 12]。
    
    
    
    
**检查操作系统执行命令是否卡顿。**
12. 用**root** 用户登录故障节点，执行命令**id admin** ，观察命令返回结果时长，观察执行命令是否缓慢（超过3s即可认为执行命令慢）。
    
    - 是，执行[步骤 13]。
    
    - 否，执行[步骤 15]。
    
    
    
    
13. 执行命令**cat /var/log/messages** ，查看nscd是否频繁重启或者存在Can't contact LDAP server的异常信息。
    
    nscd异常信息样例：
    ```
    Feb 11 11:44:42 10-120-205-33 nscd: nss_ldap: failed to bind to LDAP server ldaps://10.120.205.55:21780: Can't contact LDAP server
    Feb 11 11:44:43 10-120-205-33 ntpq: nss_ldap: failed to bind to LDAP server ldaps://10.120.205.55:21780: Can't contact LDAP server
    Feb 11 11:44:44 10-120-205-33 ntpq: nss_ldap: failed to bind to LDAP server ldaps://10.120.205.92:21780: Can't contact LDAP server
    ```
    - 是，执行[步骤 14]。
    
    - 否，执行[步骤 15]。
    
    
    
    
14. 执行命令**vi $BIGDATA_HOME/tmp/random_ldap_ip_order** ，修改末尾数字，若原来为奇数则改为偶数，若原来为偶数则修改为奇数；
    
    执行命令**vi /etc/ldap.conf**进入编辑模式，按"Insert"键开始编辑，然后将URI配置项的前两个IP进行调换。
    修改完成后按"Esc"键退出编辑模式，并输入**:wq**保存退出。
    执行命令**service nscd restart** ，重启nscd服务，等待5分钟，再次执行**id admin**命令，观察返回结果时长，观察执行命令是否缓慢。
    - 是，执行[步骤 15]。
    
    - 否，登录其他故障节点执行[步骤 12]至[步骤 14]；排查"/etc/ldap.conf"修改前URI中第一个LdapServer节点，是否故障，例如业务IP不可达、网络延时过长或者部署其他异常的软件。
    
    
    
    
**收集故障信息。**
15. 在FusionInsight Manager界面，选择"运维 \> 日志 \> 下载"。
16. 在"服务"中勾选待操作集群的"LdapClient"。
17. 单击右上角的![](https://support.huaweicloud.com/usermanual-mrs/zh-cn_image_0263895532.png)设置日志收集的"开始时间"和"结束时间"分别为告警产生时间的前后1小时，单击"下载"。
18. 请联系运维人员，并发送已收集的故障日志信息。
 
#### 告警清除
此告警修复后，系统会自动清除此告警，无需手工清除。
#### 参考信息
无。
