ipv6禁用导致rpcbind服务启动失败实例

 
 

昨天在做服务器磁盘分区扩容的时候出现过一个服务启动的问题,在此记录。
情景再现:前天晚上申请做磁盘扩容,得到批准后,昨天早上5点开始做停机调整维护,历经2个多小时的折腾,扩充完毕,有关这部分内容请参考上篇博文 ( https://blog.51cto.com/hld1992/2054837) 而后重启机器,检查服务,nginx,php-fpm,redis,svn,nfs(?)都启动正常。然后,去另一台机器上挂载nfs,问题出现了,nfs无响应。回来检查nfs服务:

好嘛,rpcbind服务没有启动,赶紧启动服务。

    [root@BZ ~]# systemctl start rpcbind
A dependency job for rpcbind.service failed. See 'journalctl -xe' for details.

报错了,根据提示使用journalctl -xe看一下日志:

[root@BZ ~]# journalctl -xe
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
--
-- Unit session-3.scope has begun starting up.
Dec 26 21:34:26 BZ chronyd[490]: System clock wrong by -1.090838 seconds, adjustment started
Dec 26 21:35:31 BZ chronyd[490]: Selected source 61.216.153.107
Dec 26 21:35:31 BZ chronyd[490]: System clock wrong by 0.646329 seconds, adjustment started
Dec 26 21:36:24 BZ polkitd[484]: Registered Authentication Agent for unix-process:2701:32282 (system bus name :1.29 [/usr/bin/pkttyagent --notify-fd 5 --fallback], object path /org/freedesktop/PolicyKit1/AuthenticationAgent, locale en_US.UTF-8)
Dec 26 21:36:24 BZ systemd[1]: rpcbind.socket failed to listen on sockets: Address family not supported by protocol #报错显示ip地址协议不支持
Dec 26 21:36:24 BZ systemd[1]: Failed to listen on RPCbind Server Activation Socket. #端口监听失败
-- Subject: Unit rpcbind.socket has failed
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
--
-- Unit rpcbind.socket has failed.
--
-- The result is failed.
Dec 26 21:36:24 BZ systemd[1]: Dependency failed for RPC bind service.

于是赶紧谷歌了下,发现是由于ipv6被禁用导致的。查看下/etc/sysctl.conf

[root@BZ ~]# less /etc/sysctl.conf | grep 'net.ipv6'
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1

果然ipv6被禁用了。由于当时情况紧急,我采取了一个比较不好的方法,把ipv6启用了(后面还有其他方法介绍)。

[root@BZ ~]# sed -i 's@net.ipv6.conf.all.disable_ipv6 = 1@net.ipv6.conf.all.disable_ipv6 = 0@g' /etc/sysctl.conf
[root@BZ ~]# sysctl -p
...
net.ipv6.conf.all.disable_ipv6 = 0

再次启动rpcbind

[root@BZ ~]# systemctl start rpcbind
[root@BZ ~]# systemctl status rpcbind
● rpcbind.service - RPC bind service
Loaded: loaded (/usr/lib/systemd/system/rpcbind.service; indirect; vendor preset: enabled)
Active: active (running) since Tue 2017-12-26 21:48:22 EST; 7s ago
Process: 2734 ExecStart=/sbin/rpcbind -w $RPCBIND_ARGS (code=exited, status=0/SUCCESS)
Main PID: 2735 (rpcbind)
CGroup: /system.slice/rpcbind.service
└─2735 /sbin/rpcbind -w Dec 26 21:48:22 BZ systemd[1]: Starting RPC bind service...
Dec 26 21:48:22 BZ systemd[1]: Started RPC bind service.

启动成功。再启动nfs

[root@BZ ~]# systemctl start  nfs
[root@BZ ~]# systemctl status nfs
● nfs-server.service - NFS server and services
Loaded: loaded (/usr/lib/systemd/system/nfs-server.service; disabled; vendor preset: disabled)
Active: active (exited) since Tue 2017-12-26 21:50:05 EST; 996ms ago
Process: 2761 ExecStart=/usr/sbin/rpc.nfsd $RPCNFSDARGS (code=exited, status=0/SUCCESS)
Process: 2756 ExecStartPre=/bin/sh -c /bin/kill -HUP `cat /run/gssproxy.pid` (code=exited, status=0/SUCCESS)
Process: 2755 ExecStartPre=/usr/sbin/exportfs -r (code=exited, status=0/SUCCESS)
Main PID: 2761 (code=exited, status=0/SUCCESS)
CGroup: /system.slice/nfs-server.service Dec 26 21:50:05 BZ systemd[1]: Starting NFS server and services...
Dec 26 21:50:05 BZ systemd[1]: Started NFS server and services.

再次去客户端挂载nfs就可以成功了。

========================================================================
刚才说了,启动ipv6当然不是一个好的方法,下面来继续说明下。
从前面的报错日志中我们可以看到,rpcbind.service依赖rpcbind.socket

    -- Unit rpcbind.socket has failed.

既然rpcbind.socket启动失败,那应该在它的配置文件中会有关于ipv6的配置,我来找一下:

    [root@BZ ~]# find /etc/ -name '*rpcbind.socket*'
/etc/systemd/system/sockets.target.wants/rpcbind.socket

进去看下:

[Unit]
Description=RPCbind Server Activation Socket [Socket]
ListenStream=/var/run/rpcbind.sock
ListenStream=[::]:111 #果然监听了ipv6地址,将这一行注释即可
ListenStream=0.0.0.0:111
BindIPv6Only=ipv6-only [Install]
WantedBy=sockets.target

将关于ipv6的相关配置注释后,重启rpcbind.socket

[root@BZ ~]# systemctl restart rpcbind.socket
Warning: rpcbind.socket changed on disk. Run 'systemctl daemon-reload' to reload units.

systemd发现配置文件有改动,需要重载一下。

[root@BZ ~]# systemctl daemon-reload

再次重启

[root@BZ ~]# systemctl restart rpcbind.socket
[root@BZ ~]# systemctl status rpcbind.socket
● rpcbind.socket - RPCbind Server Activation Socket
Loaded: loaded (/usr/lib/systemd/system/rpcbind.socket; enabled; vendor preset: enabled)
Active: active (running) since Tue 2017-12-26 22:01:45 EST; 9s ago
Listen: /var/run/rpcbind.sock (Stream)
0.0.0.0:111 (Stream) #只监听了ipv4的111端口

后记

在谷歌的过程中,发现还有一种方法来解决这个问题。具体就是使用dracut -v -f 命令重建下initramfs,然后重启机器即可。
还有一个问题就是rpcbind设置开机自启动失败

[root@BZ ~]# systemctl enable rpcbind.service
[root@BZ ~]# systemctl is-enabled rpcbind.service
indirect

不知道是什么原因,希望有大神可以帮我解答啊,万分感谢,我现在是把它放到了/etc/rc.d/rc.local里面了。

ipv6禁用导致rpcbind服务启动失败实例的更多相关文章

  1. ipv6禁用导致rpcbind服务启动失败解决办法

    参考文档:http://blog.51cto.com/hld1992/2055028

  2. oracleDBconsole服务启动失败

    问题出现的故障:    在一次正常使用企业管理器后,重新启动计算机,再次启动OracleDBConsoleORCL服务时,报:Windows 不能在 本地计算机 启动 OracleDBConsoleo ...

  3. 玩转Windows服务系列——无COM接口Windows服务启动失败原因及解决方案

    将VS创建的Windows服务项目编译生成的程序,通过命令行 “服务.exe -Service”注册为Windows服务后,就可以通过服务管理器进行管理了. 问题 通过服务管理器进行启动的时候,发现服 ...

  4. CentOS 7下MySQL服务启动失败的解决思路

    今天,启动MySQL服务器失败,如下所示: [root@spark01 ~]# /etc/init.d/mysqld start Starting mysqld (via systemctl): Jo ...

  5. paip.花生壳 服务启动失败 以及不能安装服务,权限失败的解决

    paip.花生壳 服务启动失败 以及不能安装服务,权限失败的解决 系统win7 NewPhDDNS_1.0.0.30166.exe  作者Attilax  艾龙,  EMAIL:1466519819@ ...

  6. Sonatype Nexus 服务启动失败问题解决

    Sonatype Nexus 服务启动失败问题解决 问题前述: 近日在开发机本机安装了 Oracle 数据库快捷版 11g2 之后,重启电脑后发现本机的maven代理服务无法访问. 现象 通过 Win ...

  7. “由于下列错误,Parallel port driver 服务启动失败”,注意了

    最近在“事件查看器”中发现这么一个错误:“由于下列错误,Parallel port driver 服务启动失败”, 我到网上搜索了一下,发现很多网页上都说解决办法: 把HKEY_LOCAL_MACHI ...

  8. win2003 HookPort 服务启动失败的解决办法!

    Win2003系统每次开机启动时都弹出个对话框报HookPort 服务启动失败,很多网友都遇到同类问题,问题根源是360安全卫士引起的,官方一直没有给出解决方案 问题描述:Win2003系统每次开机启 ...

  9. SQL SERVER 服务启动失败

    好久没用SQL SERVER了.今天启动SQL,发现服务启动失败.报错例如以下:--错误发生 1069-(因为登录失败而无法启动服务.) .百度一下,解决方式例如以下: 请按下列步骤操作: 1.右键单 ...

随机推荐

  1. iOS 技术篇:从使用到了解block底层原理 (一)

    1.概述 block : Object - C对于闭包的实现 . 闭包 = 一个函数(或是指向函数的指针) +该函数执行的外部的上下文变量(自由变量) 2.对block的理解 可以嵌套定义,定义 bl ...

  2. Python中应用SQL及SQLAlchemy(一)

    以SQLit3为例: import sqlite3 conn = sqlite3.connect('db.sqlite3') #获取游标对象 cur = conn.cursor() #执行一系列SQL ...

  3. Lakeshore 中文开发界面,示例项目,飞机大战 等 Lakeshore Chinese development interface, sample project, aircraft war, etc

    Lakeshore 中文开发界面,示例项目,飞机大战 等 Lakeshore Chinese development interface, sample project, aircraft war, ...

  4. bzoj4337: BJOI2015 树的同构 树哈希判同构

    题目链接 bzoj4337: BJOI2015 树的同构 题解 树哈希的一种方法 对于每各节点的哈希值为hash[x] = hash[sonk[x]] * p[k]; p为素数表 代码 #includ ...

  5. 洛谷.4015.运输问题(SPFA费用流)

    题目链接 嗯..水题 洛谷这网络流二十四题的难度评价真神奇.. #include <queue> #include <cstdio> #include <cctype&g ...

  6. Java开发笔记(九十一)IO流处理简单的数据压缩

    前面介绍的文件I/O,不管是写入文本还是写入对象,文件中的数据基本是原来的模样,用记事本之类的文本编辑软件都能浏览个大概.这么存储数据,要说方便确实方便,只是不够经济划算,原因有二:其一,写入的数据可 ...

  7. Tinkoff Challenge - Final Round (Codeforces Round #414, rated, Div. 1 + Div. 2) 【ABC】

    老年人题解,语言python3 A - Bank Robbery 题意:给你ABC,以及n个数,问你在(B,C)之间的数有多少个. 题解:对于每个数判断一下就好了嘛 x,y,z = map(int,i ...

  8. 模拟一个带背景的 TPanel

    https://www.cnblogs.com/del/archive/2008/09/01/1281345.html

  9. 【T08】避免重新编写TCP

    1.有时候为了所谓的性能,我们倾向于使用udp,但是我们又期望数据的传输是可靠的,因此需要在应用层提供可靠性. 2.可靠.健壮的udp必须提供: a.在合理的时间内没有收到回复,进行重传 b.保证应答 ...

  10. !HDU 1574 RP-dp-(重点在状态确定)

    题意:有n件事.每件事若发生有两种情况.添加RP为a,可是收益会降低c:降低R为a,收益会添加c. 每件事可以发生的前提是小于等于或者大于等于门限值b.求最大收益. 分析:这题我没找到状态,所以就不会 ...