我们将谈论的是:-为什么我们决定切换到LXC容器?
-如何创建容器并在其上运行基于Bitrix的主机?
对谁有用:对于每个想要使用更少资源而尝试新解决方案的人。
LXC优于虚拟机
当我们遇到服务器资源不足,难以区分不同项目的访问权限以及在一台虚拟机中发生软件冲突时,我们切换到了容器。 与虚拟机相比,LXC具有一些关键优势:
- 减少CPU性能,磁盘操作和RAM的损失。 容器中几乎所有可用的东西都以服务器速度工作。
- 无需为操作系统内核,视频内存,磁盘缓冲区等分配RAM。
- 快速入门。 实际上,仅启动那些使容器正常工作所需的应用程序。
- 它支持启动容器中的单个应用程序,而不是整个系统。 可以方便地通过添加用户(而不是chroot)来授予访问权限,因为容器中只有一个项目(虚拟机上有多个)。
- 管理每个容器资源的能力。
- 快速轻松地在服务器之间移动容器。
我们使用rsync。 只需在新服务器上创建一个具有相同名称的容器并复制:
rsync -alvz :/var/lib/lxd/container/test/ /var/lib/lxd/container/test/
我们需要详细介绍第五段,并讨论资源管理。 我们必须为容器提供足够的资源来工作,并且同时确保容器不会消耗不必要的资源,从而干扰了系统其余部分的工作。
您可以通过以下命令查看资源消耗的统计信息:lxc info test
Remote: unix:// : x86_64 : 2018/12/04 14:27 UTC Status: Running Type: persistent : default Pid: 28317 IPs: eth0: inet 172.27.2.204 vethF91F2U Resources: : 56 CPU usage: ( ): 20583 Memory usage: Memory (current): 1.03GB Memory (peak): 3.11GB Network usage: eth0: : 17.45GB : 9.93GB
根据这些统计信息,您可以使用特殊命令跟踪容器消耗多少资源,并在必要时限制其消耗:
- lxc config设置测试限制.memory 2048M#设置内存限制。
- lxc config设置测试限制。cpu1,2,3,8#将容器绑定到CPU内核。
- lxc config set test cpu.allowance 10%#限制CPU消耗。
- lxc config set test root size 50GB#限制容器使用的磁盘空间量(仅适用于ZFS或btrfs)。
- lxc config获取测试limits.memory-查看设置的极限值
结果,容器使您可以在非常标准的桌面上拾取数十个容器,同时保持足够的性能。
我们配置服务器并将Bitrix的标准主机从虚拟机传输到容器
1.服务器设置1.1在服务器上安装最新版本的Ubuntu 18.04服务器。 它已经有LXD。 LXD是LXC的附加组件,LXC是一种管理程序,可简化与容器化系统的交互。
1.2
apt install bridge-utils #安装bridge-utils
1.3
lxd init #初始化lxd
1.4
lxc配置文件编辑默认值 #编辑配置文件:
devices: eth0: name: eth0 nictype: bridged parent: br0 type: nic root: path: / pool: default type: disk name: default
1.5 lxc启动ubuntu:04/18测试#创建一个名为test的容器。 他将下载图像,创建并启动它。 这样就完成了容器的配置和创建,然后继续配置容器并将主机转移到该容器。
2.主机容器配置和站点迁移2.1
lxc exec test / bin / bash#转到创建的容器。
2.2
add-apt-repository ppa:ondrej / php#添加一个仓库。
2.3
apt update#更新存储库。
2.4
apt安装php7.1 {fpm,bcmath,bz2,cli,common,curl,dev,附魔,fpm,gd,gmp,imap,intl,json,
ldap,mbstring,mcrypt,mysql,odbc,opcache,phpdbg,pspell,readline,recode,soap,
tidy,xml,xmlrpc,xsl,zip}#安装php和bitrix的所有必需模块。
2.5
apt install nginx#安装nginx。
2.6
vim /etc/netplan/50-cloud-init.yaml#使ip成为静态:
network: version: 2 ethernets: eth0: addresses: [172.27.2.108/16] gateway4: 172.27.0.1 nameservers: addresses: [172.27.1.1] dhcp4: false
2.7从我们的虚拟机中复制php和nginx配置,检查一切是否正常运行。
2.8我们从虚拟机转移整个站点。 例如:
rsync -alvz旧虚拟:/ var / www / / var / www /3.为数据库创建一个单独的容器3.1重复步骤1
.5、2.1和2.6 ,将容器命名为test-db。
3.2
apt install mysql-server#安装数据库
3.3
apt install pv#安装PV以查看上载数据库时的进度。
4.设置新的数据库服务器首先,我们从旧服务器收集信息:
4.1我们需要用户并从所需的数据库传递数据。
4.2
mysql -u test -p'test'-e“显示创建数据库testDB;” #找出数据库的创建方式(我们需要突出显示的内容):
mysql: [Warning] Using a password on the command line interface can be insecure. +----------+--------------------------------------------------------------------------+ | Database | Create Database | +----------+--------------------------------------------------------------------------+ | demoshop | <b>CREATE DATABASE `demoshop` /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci */ |</b> +----------+--------------------------------------------------------------------------+
4.3
mysqldump -ER-单事务--quick testDB | gzip> testDB.sql.gz#在我们数据库所在的服务器上运行此命令。 她将转储并将其压缩到存档中。
我们将转到新数据库并执行以下操作:
4.4
rsync -alvz旧数据库:/root/testDB.sql.gz/root/#将带有转储的存档转移到我们的容器中。
4.5
mysql#让我们进入数据库
4.5.1
通过'pass'标识用户'user'@'%'; #创建相同的用户名和密码。
4.5.2从4.2节中,输入命令:
CREATE DATABASE`DBName` / *!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci * / ;
4.5.3将
所有特权授予数据库名称*通过“ pass”标识给“用户” @“%”; #我们将授予数据库权利。
4.6我们退出数据库并运行容器控制台:
pv testDB.sql.gz | zcat | mysql testDB#将转储
填充到我们的数据库中
5.验证5.1更改连接数据库的参数,指示数据库的新IP。
5.2之后,该站点应通过IP或DNS打开,这取决于您的配置。
结论
因此,LXC容器可帮助我们减少测试服务器资源的消耗,并在一台服务器上容纳更多主机,同时保持方便地管理每台主机消耗的资源的能力。 现在,您已经获得了现成的说明,说明了实现起来很容易。