CentOS 7全新安装配置KVM虚拟化平台
UP在几个月前做了一个拨号上网的企划,当时视频里面演示用的拨号服务器是独立的一台计算机,然而那个企划刚做完没多久,Pandownload开发者被抓的新闻在网络上刷屏。虽然UP常年百度
前情提要 UP在几个月前做了一个拨号上网的企划,当时视频里面演示用的拨号服务器是独立的一台计算机,然而那个企划刚做完没多久,Pandownload开发者被抓的新闻在网络上刷屏。虽然UP常年百度云会员,也没有出现过即使会员依然龟速下载的情况,可出于跨平台同步文件、个人隐私、资料可控度等多个方面需求,还是搭建了一个运行于内网的私有云盘。 私有云盘搭建好了,问题也出现了,由于私有云盘和拨号服务器都是独立的计算机,两台计算机放在一起实在是太占地方,特别是功耗高、热量大、噪音吵。忍了一个多月实在是受不了,决定对私有云盘服务器进行虚拟化改造,将服务器配置为虚拟化平台,把拨号服务器和云盘服务器全部运行于虚拟机中。经过虚拟化之后,理论上可以大大提升服务器的利用率并减少占地面积、减少电力消耗、减少热量噪音输出。 服务器机房 运行于Linux上的虚拟化平台主要有两种,Proxmox和Libvirt+WebVirtMgr,前者是一个完全集成的虚拟化平台,安装好后开箱即用,无需多余配置,自动化程度高;后者则需要手动安装部署,需要一定的折腾能力,但可自定义的地方较多。二者都是基于KVM,所以理论上性能没有区别。由于UP主并没有接触过Proxmox,且需要对服务器进行一定的定制,所以选择了Libvrt+WebVirtMgr。 开始配置 配置KVM平台需要服务器满足以下需求: UP主目前服务器配置如下: 由于网络上的配置文档五花八门,很多都不符合当今的配置环境,特写此篇文档以记录配置过程,仅供参考。可能你在配置的时候软件版本已经更新,请以实际情况为准。 开始配置 首先全新安装CentOS 7 Minimal,安装完成后更新软件源,安装常用软件包; yum update yum install nano vim gcc wget zip unzip gzip 安装并更新常用软件包 检查处理器是否支持虚拟化技术 接下来确认服务器是否支援虚拟化技术,看见有vmx或svm即表示支援虚拟化技术,如果确认处理器支持虚拟化技术,但没有看到vmx或svm,请到BIOS中开启它。 egrep '(svm|vmx)' /proc/cpuinfo 确认服务器的处理器支援虚拟化技术 为了防止配置失败,关闭SELinux nano /etc/selinux/config 将SELINUX=enforcing改为SELINUX=disabled,保存并离开 关闭SELINUX 安装KVM、Libvirt和管理工具 yum install qemu-kvm libvirt virt-install bridge-utils 安装KVM、Libvirt和管理工具 配置网桥 安装好KVM后会自动生成一个给虚拟机用的NAT网络,接入NAT网络的虚拟机无法被内网访问,所以需要配置一个桥接网络,这一步类似于VMware虚拟机的桥接模式,目的是让虚拟机有一个内网IP。 cd /etc/sysconfig/network-scripts/ nano ifcfg-enp2s0 #ifcfg-enp2s0这个名称会根据不同计算机而发生变化 配置网桥 在末尾添加BRIDGE=”br0”,保存并离开。 为网络连接设置网桥 将网络连接复制一份,作为桥接网络的模板。 cp ifcfg-enp2s0 ifcfg-br0 复制网络连接作为网桥配置文件模板 nano ifcfg-br0 TYPE值改为Bridge,NAME和DEVICE值改为br0,删除BRIDGE="br0",删除UUID=“XXXXXX” 保存后重启网络 systemctl restart network 安装配置WebVirtMgr 至此KVM部分已经完成,接下来安装配置Web管理工具WebVirtMgr,此工具运行于Web,所以需要Nginx作为支持。由于需要下载的软件包服务器位于国外,可能速度较慢,可以通过SFTP把软件包上传到/root目录下。 cd ~ yum install gcc-c++ autoconf automake zlib zlib-devel pcre-devel openssl openssl-devel net-tools perl 安装PCRE wget tar -xvf pcre-8.42.tar.gz cd pcre-8.42 ./configure make && make install pcre-config --version 检查PCRE是否安装成功 看到有输出8.42则表示配置成功。 安装Nginx wget tar -xvf nginx-1.15.9.tar.gz cd nginx-1.15.9 ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-pcre=/root/pcre-8.42 make && make install /usr/local/nginx/sbin/nginx -v 检查Nginx是否安装成功 看到有输出Nginx版本,则表示配置成功。 为Nginx创建用户 /usr/sbin/groupadd www /usr/sbin/useradd -g www www 配置Nginx虚拟主机 此步骤为WebVirtMgr管理站点提供支持。 cd /usr/local/nginx/conf/ nano nginx.conf 在文件末尾添加include vhost/*.conf; 配置nginx.conf 检查配置文件是否存在错误,如果提示错误则检查上一步是否修改正确。 /usr/local/nginx/sbin/nginx -t 使用nginx -t检查配置文件是否正确 启动Nginx /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx -s reload /usr/local/nginx/sbin/nginx -s reopen systemctl stop firewalld.service #临时关闭防火墙 此时访问服务器的IP地址就可以看到Web页面了。 Nginx启动后的默认页面,看到此页面表示Nginx已成功启动 安装WebVirtMgr Nginx配置完成后,就可以开始安装配置WebVirtMgr了,通过WebVirtMgr可以很轻松的管理KVM虚拟机。首先安装WebVirtMgr的依赖软件包。 cd ~ yum install epel-release yum install git python-pip libvirt-python libxml2-python python-websockify python-devel pip install --upgrade pip pip install numpy 下载解压安装WebVirtMgr git clone git://github.com/retspen/webvirtmgr.git WebVirtMgr下载中 mv webvirtmgr/ /var/www/ cd /var/www/webvirtmgr/ pip install -r requirements.txt 创建Web管理页面管理员账户 ./manage.py syncdb 配置Web管理页面的管理员账户 此步骤需要输入用户名、邮箱地址和密码,按照提示输入即可。 生成Web管理页面的静态页面文件 ./manage.py collectstatic 生成静态页面文件 配置Nginx虚拟主机站点 cd /usr/local/nginx/conf/ mkdir vhost cd vhost/ touch wvm.conf nano wvm.conf 输入以下文本后保存并离开 server { listen 80 default_server; server_name $hostname; location /static/ { root /var/www/webvirtmgr; expires max; } location / { proxy_pass :8000; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-for $proxy_add_x_forwarded_for; proxy_set_header Host $host:$server_port; proxy_set_header X-Forwarded-Proto $scheme; proxy_connect_timeout 6000; proxy_read_timeout 6000; proxy_send_timeout 6000; client_max_body_size 8192M; } } 配置说明: proxy_connect_timeout、proxy_read_timeout、proxy_send_timeout这三个参数为上传读取连接的超时时间,以秒为单位,如果单个连接超时,则服务器会报504错误。 client_max_body_size为单个上传文件最大大小,以MB为单位服务器虚拟化,如果上传的文件超出值大小,则服务器会报413错误。 检查配置文件是否有错误,重新载入Nginx配置 /usr/local/nginx/sbin/nginx -t /usr/local/nginx/sbin/nginx -s reload /usr/local/nginx/sbin/nginx -s reopen 启动Web管理程序 nohup /usr/bin/python /var/www/manage.py run_gunicorn 127.0.0.1:8000 & nohup /usr/bin/python /var/www/webvirtmgr/console/webvirtmgr-console & 配置SSH免密码登录 此步骤为WebVirtMgr管理KVM虚拟机提供授权 ssh-keygen -t rsa #如果提示需要输入直接回车 ssh-copy-id [服务器IP地址] #期间需要输入一次服务器root密码 访问WebVirtMgr 此时在浏览器中打开服务器IP就可以看到管理页面了,用户名和密码为之前配置时所设置的用户名和密码。 WebVirtMgr登录界面 点击New Connection,选择SSH连接,Label和IP输入服务器的IP地址,用户名和密码为刚才设置的值,点击添加,然后就可以通过Web管理虚拟机了。 虚拟机服务器管理页面 收尾工作 如果不重启,此时是可以正常通过Web操作虚拟机的,但是重启后就无法连接了,原因是缺少novnc服务,安装即可。 yum -y install novnc 启动防火墙 systemctl start firewalld.service systemctl enable firewalld.service 添加防火墙例外端口,此步骤按需添加 firewall-cmd --zone=public --add-port=80/tcp --permanent firewall-cmd --zone=public --add-port=8080/tcp --permanent firewall-cmd --zone=public --add-port=6080/tcp --permanent firewall-cmd --zone=public --add-port=5900/tcp --permanent firewall-cmd --zone=public --add-port=5920/tcp --permanent firewall-cmd --zone=public --add-port=443/tcp --permanent systemctl restart firewalld.service 创建开机自启脚本 cd ~ chmod +x /etc/rc.d/rc.local touch autostart.sh nano autostart.sh 输入以下内容后保存并离开 #!/bin/sh /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx -s reload /usr/local/nginx/sbin/nginx -s reopen nohup /usr/bin/python /var/www/manage.py run_gunicorn 127.0.0.1:8000 & nohup /usr/bin/python /var/www/webvirtmgr/console/webvirtmgr-console & nohup novnc_server –vnc IPADDR:5920 & 设置开机启动脚本 chmod +x autostart.sh nano /etc/rc.d/rc.local 在文件末尾添加 /root/autostart.sh 重启服务器 reboot 至此,所有配置结束,每次启动服务器就可以直接开始使用虚拟化平台了。文中所使用的WebVirtMgr只是众多管理平台之中的一个,在熟悉了解整个配置流程,摸清楚各个组件之间的关系之后,可以更换其他管理平台。整个配置过程相对来说还是比较繁琐的,一步出错后面的步骤就无法完成,需要一定的Linux使用经验。 (编辑:成都站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |