使用tcp方式连接libvirtd
来源:互联网 发布:知乎 大鹏 装修 编辑:程序博客网 时间:2024/05/22 15:00
使用tcp方式连接libvirtd
Libvirt是一个软件集合,便于使用者管理虚拟机和其他虚拟化功能,比如存储和网络接口管理等等。这些软件包括一个API库、一个daemon(libvirtd)和一个命令行工具(virsh)。Libvirt的主要目标是:提供一种单一的方式管理多种不同的虚拟化提供方式和hypervisor。
只要远程服务器运行了libvirtd,libvirt的客户端就可以连接到服务器。
使用最简单的SSH方式,只要拥有SSH连接到服务器的权限,就可以无需配置:
qemu+ssh://root@example.com/system
例如: qemu+ssh://root@172.16.0.12/system ,本机SSH连接到172.16.0.12时,要使用证书登录,否则每次连接都需要输入SSH用户名和密码。
TCP方式:
qemu+tcp://example.com/system
例如:qemu+tcp://172.16.0.15/system,服务端只需要做简单配置即可:
vim /etc/libvirt/libvirtd.conf:
listen_tls = 0 #禁用tls登录
listen_tcp = 1 #启用tcp方式登录
tcp_port = "16509" #tcp端口16509
listen_addr = "0.0.0.0"
unix_sock_group = "libvirtd"
unix_sock_rw_perms = "0770"
auth_unix_ro = "none"
auth_unix_rw = "none"
auth_tcp = "none" #TCP不使用认证
max_clients = 1024 #最大总的连接客户数1024
min_workers = 50 #libvirtd启动时,初始的工作线程数目
max_workers = 200 #同上,最大数目
max_requests = 1000 #最大同时支持的RPC调用,必须大于等于max_workers
max_client_requests = 200 #每个客户端支持的最大连接数
同时修改libvirt-bin的配置文件:
vim /etc/default/libvirt-bin:
# Start libvirtd to handle qemu/kvm:
start_libvirtd="yes"
# options passed to libvirtd, add "-l" to listen on tcp
libvirtd_opts="-d -l --config /etc/libvirt/libvirtd.conf"
昨晚以上修改后,执行service libvirt-bin restart即可。 netstat -anpt就能看到libvirtd监听在TCP 16509端口。
下面附上一段python连接libvirtd的代码,并包含如何计算CPU使用率:
import libvirt as _libvirt import time class libvirt_client(object): def __init__(self,uri): self.ip = uri self.uri = 'qemu+tcp://%s/system' % uri self.connect() def connect(self): self.conn = _libvirt.open(self.uri) def check(self,uuid_string): result = dict() time_sleep = 3 dom = self.conn.lookupByUUIDString(uuid_string) infos_first = dom.info() start_cputime = infos_first[4] start_time = time.time() time.sleep(time_sleep) infos_second = dom.info() end_cputime = infos_second[4] end_time = time.time() cputime = (end_cputime - start_cputime) cores = infos_second[3] cpu_usage = 100 * cputime / (time_sleep*cores*1000000000) print cpu_usage virt = libvirt_client('172.16.0.209') virt.check('ef809edd-2168-4007-8319-3d2acbc49aff')
再附上一个列出服务器上所有运行着的实例的UUID的函数:
#!/usr/bin/python import sys try: import libvirt as _libvirt except (ImportError,ImportWarning) as e: print "Can not find python-libvirt, in ubuntu just run \"sudo apt-get install python-libvirt\"." print e sys.exit(1) def list_uuids(host): dom_ids = [] uri = 'qemu+tcp://%s/system' % host try: conn = _libvirt.open(uri) except Exception,e: print 'libvirt error: can not connect to remote libvirtd' raise e domain_ids = conn.listDomainsID() for domain_id in domain_ids: dom = conn.lookupByID(domain_id) dom_ids.append(dom.UUIDString()) print dom_ids list_uuids('172.16.0.209')
- 使用tcp方式连接libvirtd
- virsh使用qemu+tcp访问远程libvirtd
- <转>virsh使用qemu+tcp访问远程libvirtd
- nagios当中使用nonblocking方式建立tcp连接
- VFP连接sqlserver的TCP/IP方式
- 关于TCP非阻塞方式connect连接
- 通过TCP传输方式连接WCF
- 使用nodejs实现tcp连接
- 使用sock5代理连接tcp
- 使用TCP方式登陆OCS
- libvirtd 学习
- mysql socket连接比tcp连接方式更快
- H2 连接方式、简单使用
- 使用socket方式连接nginx
- TCP/IP (五) TCP连接的内存使用
- 网络编程基础:使用TCP连接
- libcurl网络连接使用tcp/ip
- libcurl网络连接使用tcp/ip
- .NET操作XML--XMLTextWriter
- ubuntu fedora 添加右键 打开终端
- XML与.NET
- 学习网站收集(陆续添加中)
- 获取 LDAP 的 Base DN
- 使用tcp方式连接libvirtd
- web编程基础知识点总结
- Common Substring poj3415
- 在windows2008下使用filezilla连接不上的问题
- asp.net三层架构详解
- Android Binder - Service Manager
- 文件格式对应http的Content-Type字段
- Test.sh
- 负载均衡器设计