整理的内核虚拟化LXC在阿里云服务器上的配置

因为阿里云服务器本身应该是虚拟机,在上面再创建虚拟机是不行的。但是我想把一台阿里云服务器安装几个隔离的服务。

安装一个docker太重了。。

所以直接安装lxc吧。

  1. 选择一个centos7的阿里云服务器,centos7才支持lxc

  2. 先yum一个lxc

    yum install lxc

  3. 然后配置一个网桥,阿里云是eth0是内网,eth1是外网,在外网网卡上配网桥有点危险,所以可以把网桥配在内网,也就是eth0上面

    网桥配置如下:

 cat /etc/sysconfig/network-scripts/ifcfg-br0

DEVICE="br0"

TYPE=Bridge

ONBOOT=yes

BOOTPROTO=static

IPADDR=阿里云内网ip

NETMASK=阿里云内网掩码

然后我们可以修改eth0的配置,让网桥绑在eth0上。

cat /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0

ONBOOT=yes

BRIDGE=br0

4.有了网桥,lxc就可以连接网络了,然后专心搞lxc配置

 给lxc一个运行的硬盘。

思路是将整个/复制到一个子目录下,作为lxc的根。

但是这里有两个问题,其一,/dev/ /sys /proc是没法复制的。

其二,有可能我们需要在usr目录下安装自己的应用。

所以直接copy是不行的,而用mount所有的目录的方法也是不行的。

所以首先,创建/dev /sys /proc目录,把原来的根下面的/dev /sys /proc 给mount过来,然后将usr等目录给拷贝到子目录下面


  cp  -rf  /boot /export/lxc/nagios_lxc/rootfs/

  cp  -rf  /bin  /export/lxc/nagios_lxc/rootfs/

  cp  -rf  /etx  /export/lxc/nagios_lxc/rootfs/

  cp  -rf  /etc  /export/lxc/nagios_lxc/rootfs/

  cp  -rf  /lib  /export/lxc/nagios_lxc/rootfs/

   cp  -rf  /lib64  /export/lxc/nagios_lxc/rootfs/

  cp  -rf  /usr  /export/lxc/nagios_lxc/rootfs/

  cp  -rf  /sbin  /export/lxc/nagios_lxc/rootfs/

这里有个坑的地方是usr目录太大了,要1个G,其实这地方docker采用的autfs,或者任何一个支持快照和日志的文件系统都可以用快照的方式,在/usr目录上做增量。能够极大地减少硬盘占用。不过我懒得弄,而且阿里云服务器的内存是要钱的,因此直接就copy了。

这里可以创建lxc。。

 lxc-create -n 虚拟机名 -f /export/lxc/nagios_lxc/rootfs/etc/lxc/default.conf

然后在/var/lib/lxc目录下,出现了虚拟机名的config文件,下面开始修改这个lxc提供的配置文件

lxc提供的配置文件,有两个重要的接口——rootfs和fstab的配置

lxc默认配置文件在/etc/lxc下,而创建后的配置文件在/var/lib/lxc下面

 cat /var/lib/lxc/basic/config

lxc.mount = /export/lxc/basic_lxc/rootfs/etc/fstab

lxc.utsname = basic

lxc.network.type = veth

lxc.network.flags = up

lxc.network.link = br0

lxc.rootfs = /export/lxc/basic_lxc/rootfs

lxc.network.name=eth0

lxc.network.ipv4=192.168.199.3/24

lxc.network.ipv4.gateway=192.168.199.1

这里解释一下:

lxc.mount 是挂载目录的配置,相当于虚拟机的fstab文件,这个其实可以放在任何地方,属于在虚拟机之外的配置,这里可以实现将/dev /proc /sys挂到lxc的子目录下

 cat /export/lxc/basic_lxc/rootfs/etc/fstab


#

# /etc/fstab

# Created by anaconda on Fri Nov 21 18:16:53 2014

#

# Accessible filesystems, by reference, are maintained under '/dev/disk'

# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info

#

/dev    /export/lxc/basic_lxc/rootfs/dev        none    rw,bind 0 0

/dev/pts        /export/lxc/basic_lxc/rootfs/dev/pts    none    rw,bind 0 0

/proc   /export/lxc/basic_lxc/rootfs/proc       proc    defaults 0 0

/sys    /export/lxc/basic_lxc/rootfs/sys        sysfs   defaults 0 0

注意/dev/pts要挂一个带读写的

lxc.rootfs = /export/lxc/basic_lxc/rootfs 这里指向的是lxc虚拟机的根目录位置。进入/export/lxc/basic_lxc/目录后,就是虚拟机的可以看到的内容了,虚拟机的里面应用的变化和写入都在rootfs里面,这个目录可以指向自己喜欢的目录。这个根目录要模拟一个真实的根的样子,所以才有各种copy和fstab的挂载

然后就是网络了

lxc.network.link = br0

表明这个lxc挂在br0上面,之前的网桥配置有用了。

lxc与普通虚拟机不一样,不需要再虚拟机里面指定ip和网络配置,lxc的网络配置,都是在外面配的

lxc.network.ipv4=192.168.199.3/24

这个是虚拟机的网络ip,我配成了192.168.199.3 ,子网掩码是255.255.255.0

给虚拟机一个网关,这样,虚拟机可以通过本机连接到网络:

lxc.network.ipv4.gateway=192.168.199.1

现在出现了一个新的ip,192.168.199.1

我这里不能用阿里给的内网ip,而我的网桥在内网上,如果配成内网ip,很可能有ip冲突,所以我这边给阿里云主机的内网配置一个别名,相当于两个ip。

因为用了网桥,所以第一个ip也配置在网桥上面,在/etc/sysconfig/network-scripts/下创建ifcfg-br0:0文件

cat /etc/sysconfig/network-scripts/ifcfg-br0:0

DEVICE="br0:0"

TYPE=Bridge

ONBOOT=yes

BOOTPROTO=static

IPADDR=192.168.199.1

NETMASK=255.255.255.0

重启网络服务就可以了。

配置到这一步,可以启动lxc了。

lxc-execute -n 虚拟机名 /usr/sbin/sshd -D

然后可以ssh 192.168.199.3 访问我们的虚拟机 

现在还有最后一步,就是为虚拟机配置一个snat

iptables -t nat -A POSTROUTING -s 192.168.199.0/24 -o eth1 -j SNAT --to 阿里云外网IP

然后我们虚拟机也要对外提供服务,配置一个dnat

iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 10086 -j DNAT --to 192.168.199.3:80

完工! 









 









转载于:https://my.oschina.net/brinlike/blog/464245

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值