Convirt管理机Socat驻留进程故障处理

Convirt故障问题现象:

1、在convirt平台对某个VM虚机执行View Console报错:cannot concatenate 'str' and 'gaierror' objects ,不能正常vnc连接VM,报错如图:

 

2、ps查看socat进程,VNC端口从6900到6999都已经被占用。

故障原因分析:

测试得知,通过Convirt平台使用VNC连接一个VM,socat端口转发会启用两个进程,宿主机和VM之间一来一回,如下内容:

[root@xencms convirt]# ps aux  |grep socat|grep -v grep

root     31505  0.0  0.0  42612  1508 ?        S    10:46   0:00 socat -d -d -d -d TCP-LISTEN:6900 EXEC:/usr/bin/ssh -p 22 [email protected] socat - TCP\:127.0.0.1\:5902

root     31506  0.0  0.0  58544  3316 ?        S    10:46   0:00 /usr/bin/ssh -p 22 [email protected] socat - TCP:127.0.0.1:5902

若在Convir平台使用VNC时有不合理操作(如:直接关闭浏览器、浏览器崩溃)导致socat端口转发进程常驻系统中,并占用VNC端口。

而VNC端口范围是6900-6999(TCP协议),因为一些不合理操作导致端口转发驻留进程占用端口,达到第101个VNC连接VM时不能正常连接、报错,如本章最初引发的问题。VM节点转发端口是从5902开始,如上进程查看内容。

至此已经把故障原因搞清楚:Convirt管理机因socat驻留进程占满VNC端口导致socat不能正常VNC端口转发连接VM,找到病灶就可以对症下药喽。

问题处理方法:

1、将所有socat进程kill即可,使用killall socat无果,如下命令解决:

ps aux  |grep socat|grep -v grep|awk '{print $2}'|xargs kill -9

2、规范convirt平台操作流程,避免socat驻留进程。