在腾讯云服务器中用ProxmoxVE建立基于LXC的Linux虚拟机 作者: Fmq 时间: 2018-12-07 分类: 随手笔记 腾讯云的弹性网卡是绑定私有网络内云主机的一种弹性网络接口,可在多个云主机间自由迁移。您可以在云主机上绑定多个弹性网卡,实现高可用网络方案;也可以在弹性网卡上绑定多个内网IP,实现单主机多IP部署。利用弹性网卡,我们可以快速部署多台拥有公网IP的Linux虚拟主机。 本文使用腾讯服务器配置为4核心8G内存5M带宽,建立4台虚拟服务器。 #### 1.弹性网卡并绑定弹性IP 首先,进入腾讯云的控制台,产品选择私有网络,新建一个VPC,取名pve: [![新建VPC](/usr/uploads/2018/12/%E6%96%B0%E5%BB%BAVPC.png "新建VPC")](/usr/uploads/2018/12/%E6%96%B0%E5%BB%BAVPC.png "新建VPC") 建好的VPC如图示: [![vpc](/usr/uploads/2018/12/pve-VPC.png "vpc")](/usr/uploads/2018/12/pve-VPC.png "vpc") 腾讯云服务器对弹性网卡是有数量限制的,如图示: [![限制](/usr/uploads/2018/12/%E5%BC%B9%E6%80%A7%E7%BD%91%E5%8D%A1%E9%99%90%E5%88%B6.png "限制")](/usr/uploads/2018/12/%E5%BC%B9%E6%80%A7%E7%BD%91%E5%8D%A1%E9%99%90%E5%88%B6.png "限制") 本例使用的4核心服务器可以建立4块弹性网卡,已经有主网卡,可再建三块网卡。 首先为弹性网卡建立子网: [![新建子网](/usr/uploads/2018/12/%E6%96%B0%E5%BB%BA%E5%AD%90%E7%BD%91.png "新建子网")](/usr/uploads/2018/12/%E6%96%B0%E5%BB%BA%E5%AD%90%E7%BD%91.png "新建子网") 建好的子网如图示: [![子网](/usr/uploads/2018/12/%E5%AD%90%E7%BD%91.png "子网")](/usr/uploads/2018/12/%E5%AD%90%E7%BD%91.png "子网") 再新建三块弹性网卡,绑定到子网,内网IP可以随意填写: [![新建网卡](/usr/uploads/2018/12/%E6%96%B0%E5%BB%BA%E5%BC%B9%E6%80%A7%E7%BD%91%E5%8D%A1.png "新建网卡")](/usr/uploads/2018/12/%E6%96%B0%E5%BB%BA%E5%BC%B9%E6%80%A7%E7%BD%91%E5%8D%A1.png "新建网卡") 建好的四块网卡如图示: [![网卡](/usr/uploads/2018/12/%E5%BC%B9%E6%80%A7%E7%BD%91%E5%8D%A1.png "网卡")](/usr/uploads/2018/12/%E5%BC%B9%E6%80%A7%E7%BD%91%E5%8D%A1.png "网卡") 将新建好的三块网卡绑定到云服务器上: [![绑定网卡](/usr/uploads/2018/12/%E7%BB%91%E5%AE%9A%E4%BA%91%E4%B8%BB%E6%9C%BA.png "绑定网卡")](/usr/uploads/2018/12/%E7%BB%91%E5%AE%9A%E4%BA%91%E4%B8%BB%E6%9C%BA.png "绑定网卡") 再为内网IP绑定公网IP地址。弹性网卡的主IP负责连接到宿主机,可以不绑定外网地址,每一个辅助IP对应一个虚拟服务器的外网IP,按需绑定: [![绑定IP](/usr/uploads/2018/12/%E7%BB%91%E5%AE%9A%E5%BC%B9%E6%80%A7IP.png "绑定IP")](/usr/uploads/2018/12/%E7%BB%91%E5%AE%9A%E5%BC%B9%E6%80%A7IP.png "绑定IP") 再给每一块弹性网卡设定安全组: [![绑定安全组](/usr/uploads/2018/12/%E7%BB%91%E5%AE%9A%E5%AE%89%E5%85%A8%E7%BB%84.png "绑定安全组")](/usr/uploads/2018/12/%E7%BB%91%E5%AE%9A%E5%AE%89%E5%85%A8%E7%BB%84.png "绑定安全组") 网络拓扑如图示: [![网络图](/usr/uploads/2018/12/%E7%BD%91%E7%BB%9C%E6%8B%93%E6%89%91%E5%9B%BE.png "网络图")](/usr/uploads/2018/12/%E7%BD%91%E7%BB%9C%E6%8B%93%E6%89%91%E5%9B%BE.png "网络图") #### 2.安装ProxmoxVE 建议选择腾讯Windows模板系统后,自行重装为debian9。安装方法参考 [从Windows到Linux](https://www.fmqcloud.com/archives/wintolinux.html "从Windows到Linux") 安装debian的时候,网卡选择ens3,硬盘分区建议LVM分区,并使用LVM-thin,这样可以使用快照和模板功能: [![选择网卡](/usr/uploads/2018/12/%E9%80%89%E6%8B%A9%E7%BD%91%E5%8D%A1.png "选择网卡")](/usr/uploads/2018/12/%E9%80%89%E6%8B%A9%E7%BD%91%E5%8D%A1.png "选择网卡") [![分区](/usr/uploads/2018/12/%E7%A1%AC%E7%9B%98%E5%88%86%E5%8C%BA.png "分区")](/usr/uploads/2018/12/%E7%A1%AC%E7%9B%98%E5%88%86%E5%8C%BA.png "分区") [![格式](/usr/uploads/2018/12/%E6%A0%BC%E5%BC%8F.png "格式")](/usr/uploads/2018/12/%E6%A0%BC%E5%BC%8F.png "格式") 安装好debian9后,进入系统,建立数据分区: ```bash lvcreate -L 10G -n data1 pve lvconvert --type thin-pool pve/data1 lvextend -L +25G -n pve/data1 ``` 完成分区如图示: [![分区](/usr/uploads/2018/12/%E6%89%A9%E5%B1%95%E5%88%86%E5%8C%BA.png "分区")](/usr/uploads/2018/12/%E6%89%A9%E5%B1%95%E5%88%86%E5%8C%BA.png "分区") 之后,按照 [PVE安装方法](https://www.fmqcloud.com/archives/pve.html "PVE安装") 安装好PVE,并重启。 #### 3.配置PVE 安装好PVE后,我们先配置网络: [![IP](/usr/uploads/2018/12/ip%E4%BF%AE%E6%94%B9.png "IP")](/usr/uploads/2018/12/ip%E4%BF%AE%E6%94%B9.png "IP") 如图示,系统默认我们的四块网卡为ens3-6,现在只有ens3主网卡的可以使用,我们需要启动每块网卡,并桥接到PVE的虚拟网桥上面: 编辑`/etc/network/interfaces ` ```bash auto lo iface lo inet loopback allow-hotplug ens3 iface ens3 inet dhcp allow-hotplug ens4 iface ens4 inet manual allow-hotplug ens5 iface ens5 inet manual allow-hotplug ens6 iface ens6 inet manual auto vmbr4 iface vmbr4 inet dhcp bridge-ports ens4 bridge-stp off bridge-fd 0 auto vmbr5 iface vmbr5 inet dhcp bridge-ports ens5 bridge-stp off bridge-fd 0 auto vmbr6 iface vmbr6 inet dhcp bridge-ports ens6 bridge-stp off bridge-fd 0 ``` 编辑`/etc/sysctl.conf`开启转发: ```bash net.ipv4.ip_forward=1 ``` 配置路由表,让几个网卡各走各的路。 编辑`/etc/iproute2/rt_tables` , 添加如下内容 ```bash 103 ens3 104 ens4 105 ens5 106 ens6 ``` 添加如下路由: ```bash ip route flush table ens3 ip route add default via 10.10.0.1 dev ens3 src 10.10.0.2 table ens3 ip rule add from 10.10.0.2 table ens3 ip route flush table ens4 ip route add default via 10.10.10.1 dev vmbr4 src 10.10.10.2 table ens4 ip rule add from 10.10.10.2 table ens4 ip route flush table ens5 ip route add default via 10.10.20.1 dev vmbr5 src 10.10.20.2 table ens5 ip rule add from 10.10.20.2 table ens5 ip route flush table ens6 ip route add default via 10.10.30.1 dev vmbr6 src 10.10.30.2 table ens6 ip rule add from 10.10.30.2 table ens6 ``` 路由规则宿主机重启后失效,可添加自启动服务,具体步骤参考 [这里](https://www.fmqcloud.com/archives/pve.html "这里") 。 重启系统,进入PVE控制面板,将刚才新建的data1分区添加到存储池中: [![添加分区](/usr/uploads/2018/12/%E6%B7%BB%E5%8A%A0%E5%88%86%E5%8C%BA.png "添加分区")](/usr/uploads/2018/12/%E6%B7%BB%E5%8A%A0%E5%88%86%E5%8C%BA.png "添加分区") 至此,PVE配置完成,我们可以新建虚拟服务器了 #### 4.新建Linux虚拟服务 LXC是一种轻量级的虚拟化技术,LXC并不对操作系统进行虚拟化,而是直接调用其所处主机的操作系统。这意味着所有的LXC共享同一个主机操作系统内核,并直接访问主机的各类资源。由于LXC无需虚拟化操作系统内核,因此能有效节约 CPU 和内存资源,资源消耗接近于0。但是LXC也有弱点: ```bash 1:只能运行基于 Linux 的操作系统,比如你无法在容器内运行FreeBSD或Windows系统。 2:出于安全性的考虑,对主机资源的访问需要被有效控制。通常通过AppArmor,SecComp过滤器或Linux内核的其他组件来实现。 ``` PVE系统提供了基本的Linux镜像模板,涵盖了大部分常见操作系统 ```bash system alpine-3.6-default_20180913_amd64.tar.xz system alpine-3.7-default_20180913_amd64.tar.xz system alpine-3.8-default_20180913_amd64.tar.xz system archlinux-base_20180906-1_amd64.tar.gz system centos-6-default_20161207_amd64.tar.xz system centos-7-default_20171212_amd64.tar.xz system debian-6.0-standard_6.0-7_amd64.tar.gz system debian-7.0-standard_7.11-1_amd64.tar.gz system debian-8.0-standard_8.7-1_amd64.tar.gz system debian-9.0-standard_9.5-1_amd64.tar.gz system fedora-27-default_20171212_amd64.tar.xz system fedora-28-default_20180907_amd64.tar.xz system fedora-29-default_20181126_amd64.tar.xz system gentoo-current-default_20180906_amd64.tar.xz system opensuse-15.0-default_20180907_amd64.tar.xz system opensuse-42.3-default_20171214_amd64.tar.xz system ubuntu-12.04-standard_12.04-1_amd64.tar.gz system ubuntu-14.04-standard_14.04-1_amd64.tar.gz system ubuntu-16.04-standard_16.04-1_amd64.tar.gz system ubuntu-16.10-standard_16.10-1_amd64.tar.gz system ubuntu-17.04-standard_17.04-1_amd64.tar.gz system ubuntu-17.10-standard_17.10-1_amd64.tar.gz system ubuntu-18.04-standard_18.04-1_amd64.tar.gz system ubuntu-18.10-standard_18.10-1_amd64.tar.gz turnkeylinux debian-9-turnkey-ansible_15.0-1_amd64.tar.gz turnkeylinux debian-9-turnkey-asp-net-apache_15.1-1_amd64.tar.gz turnkeylinux debian-9-turnkey-b2evolution_15.2-1_amd64.tar.gz turnkeylinux debian-9-turnkey-bugzilla_15.1-1_amd64.tar.gz turnkeylinux debian-9-turnkey-cakephp_15.1-1_amd64.tar.gz turnkeylinux debian-9-turnkey-canvas_15.1-1_amd64.tar.gz turnkeylinux debian-9-turnkey-codeigniter_15.1-1_amd64.tar.gz turnkeylinux debian-9-turnkey-collabtive_15.2-1_amd64.tar.gz turnkeylinux debian-9-turnkey-concrete5_15.1-1_amd64.tar.gz turnkeylinux debian-9-turnkey-core_15.0-1_amd64.tar.gz turnkeylinux debian-9-turnkey-couchdb_15.0-1_amd64.tar.gz turnkeylinux debian-9-turnkey-django_15.1-1_amd64.tar.gz turnkeylinux debian-9-turnkey-dokuwiki_15.0-1_amd64.tar.gz turnkeylinux debian-9-turnkey-domain-controller_15.0-1_amd64.tar.gz turnkeylinux debian-9-turnkey-drupal7_15.2-1_amd64.tar.gz turnkeylinux debian-9-turnkey-drupal8_15.3-1_amd64.tar.gz turnkeylinux debian-9-turnkey-e107_15.1-1_amd64.tar.gz turnkeylinux debian-9-turnkey-elgg_15.1-1_amd64.tar.gz turnkeylinux debian-9-turnkey-espocrm_15.2-1_amd64.tar.gz turnkeylinux debian-9-turnkey-ezplatform_15.1-1_amd64.tar.gz turnkeylinux debian-9-turnkey-fileserver_15.0-1_amd64.tar.gz turnkeylinux debian-9-turnkey-foodsoft_15.0-1_amd64.tar.gz turnkeylinux debian-9-turnkey-foswiki_15.1-1_amd64.tar.gz turnkeylinux debian-9-turnkey-gallery_15.1-1_amd64.tar.gz turnkeylinux debian-9-turnkey-ghost_15.2-1_amd64.tar.gz turnkeylinux debian-9-turnkey-gitea_15.2-1_amd64.tar.gz turnkeylinux debian-9-turnkey-gitlab_15.1-1_amd64.tar.gz turnkeylinux debian-9-turnkey-gnusocial_15.1-1_amd64.tar.gz turnkeylinux debian-9-turnkey-icescrum_15.1-1_amd64.tar.gz turnkeylinux debian-9-turnkey-jenkins_15.3-1_amd64.tar.gz turnkeylinux debian-9-turnkey-joomla3_15.2-1_amd64.tar.gz turnkeylinux debian-9-turnkey-lamp_15.1-1_amd64.tar.gz turnkeylinux debian-9-turnkey-lapp_15.0-1_amd64.tar.gz turnkeylinux debian-9-turnkey-laravel_15.1-1_amd64.tar.gz turnkeylinux debian-9-turnkey-lighttpd-php-fastcgi_15.1-1_amd64.tar.gz turnkeylinux debian-9-turnkey-limesurvey_15.1-1_amd64.tar.gz turnkeylinux debian-9-turnkey-magento_15.1-1_amd64.tar.gz turnkeylinux debian-9-turnkey-mahara_15.0-1_amd64.tar.gz turnkeylinux debian-9-turnkey-mambo_15.1-1_amd64.tar.gz turnkeylinux debian-9-turnkey-mantis_15.1-1_amd64.tar.gz turnkeylinux debian-9-turnkey-matomo_15.1-1_amd64.tar.gz turnkeylinux debian-9-turnkey-mattermost_15.1-1_amd64.tar.gz turnkeylinux debian-9-turnkey-mayan-edms_15.0-1_amd64.tar.gz turnkeylinux debian-9-turnkey-mediaserver_15.0-1_amd64.tar.gz turnkeylinux debian-9-turnkey-mediawiki_15.2-1_amd64.tar.gz turnkeylinux debian-9-turnkey-mibew_15.1-1_amd64.tar.gz turnkeylinux debian-9-turnkey-moinmoin_15.0-1_amd64.tar.gz turnkeylinux debian-9-turnkey-mongodb_15.0-1_amd64.tar.gz turnkeylinux debian-9-turnkey-moodle_15.1-1_amd64.tar.gz turnkeylinux debian-9-turnkey-mumble_15.0-1_amd64.tar.gz turnkeylinux debian-9-turnkey-mysql_15.1-1_amd64.tar.gz turnkeylinux debian-9-turnkey-nextcloud_15.1-1_amd64.tar.gz turnkeylinux debian-9-turnkey-nginx-php-fastcgi_15.1-1_amd64.tar.gz turnkeylinux debian-9-turnkey-nodejs_15.0-1_amd64.tar.gz turnkeylinux debian-9-turnkey-observium_15.1-1_amd64.tar.gz turnkeylinux debian-9-turnkey-odoo_15.0-1_amd64.tar.gz turnkeylinux debian-9-turnkey-omeka_15.1-1_amd64.tar.gz turnkeylinux debian-9-turnkey-openldap_15.0-1_amd64.tar.gz turnkeylinux debian-9-turnkey-openvpn_15.0-1_amd64.tar.gz turnkeylinux debian-9-turnkey-orangehrm_15.1-1_amd64.tar.gz turnkeylinux debian-9-turnkey-oscommerce_15.1-1_amd64.tar.gz turnkeylinux debian-9-turnkey-otrs_15.1-1_amd64.tar.gz turnkeylinux debian-9-turnkey-owncloud_15.1-1_amd64.tar.gz turnkeylinux debian-9-turnkey-phpbb_15.1-1_amd64.tar.gz turnkeylinux debian-9-turnkey-phplist_15.1-1_amd64.tar.gz turnkeylinux debian-9-turnkey-plone_15.0-1_amd64.tar.gz turnkeylinux debian-9-turnkey-postgresql_15.0-1_amd64.tar.gz turnkeylinux debian-9-turnkey-prestashop_15.1-1_amd64.tar.gz turnkeylinux debian-9-turnkey-processmaker_15.1-1_amd64.tar.gz turnkeylinux debian-9-turnkey-punbb_15.1-1_amd64.tar.gz turnkeylinux debian-9-turnkey-rails_15.1-1_amd64.tar.gz turnkeylinux debian-9-turnkey-redmine_15.1-1_amd64.tar.gz turnkeylinux debian-9-turnkey-revision-control_15.0-1_amd64.tar.gz turnkeylinux debian-9-turnkey-roundup_15.1-1_amd64.tar.gz turnkeylinux debian-9-turnkey-sahana-eden_15.1-1_amd64.tar.gz ``` 新建虚拟机LXC,选择CPU内存和硬盘大小,并按需配置环境,最后保存为模板。 [![show](/usr/uploads/2018/12/show.png "show")](/usr/uploads/2018/12/show.png "show") 本例我们新建4台虚拟机,网络配置如下 [![1](/usr/uploads/2018/12/test1.png "1")](/usr/uploads/2018/12/test1.png "1") [![2](/usr/uploads/2018/12/test2.png "2")](/usr/uploads/2018/12/test2.png "2") [![3](/usr/uploads/2018/12/test3.png "3")](/usr/uploads/2018/12/test3.png "3") [![4](/usr/uploads/2018/12/test4.png "4")](/usr/uploads/2018/12/test4.png "4") 4台虚拟机都拥有自己的独立的公网IP地址: [![ip](/usr/uploads/2018/12/ipshow.png "ip")](/usr/uploads/2018/12/ipshow.png "ip") 至此,虚拟机建立完毕,你可以部署你的项目,并且任意扩展。 最后,来张全家福 [![test](/usr/uploads/2018/12/%E6%B5%8B%E9%80%9F.png "test")](/usr/uploads/2018/12/%E6%B5%8B%E9%80%9F.png "test") #### PS 1. 可惜腾讯云的服务器不支持KVM,要不然就可以直接开windows的虚拟机。国外好像DO的机器支持,但是没有这么方便的弹性网卡和弹性IP给你用。杜甫的IP还要单独付费。 2. 阿里云的弹性网卡一个网卡只能绑定一个IP地址,罪大恶极。 3. 我有一台机器吃灰VS我有6台机器吃灰,气势明显不一样啦! 标签: proxmoxve, 腾讯云, 弹性网卡, 弹性IP, 吃灰