使用LXD搭建Web网站 (2)

让我们来创建三个容器。我们将创建两个web容器,并为反向代理创建第三个容器。反向代理的目的是将来自网络的传入连接定向到容器中的正确Web服务器。

我们将使用lxc launch命令创建并启动名为web1的Ubuntu 16.04(ubuntu:x)容器。ubuntu:x是预先配置的LXD镜像存储库的标识符

注意:您可以通过运行lxc image list images:来运行镜像, lxc image list ubuntu:命令找到所有可用Ubuntu映像的完整列表。

执行以下命令以创建容器:

lxc launch ubuntu:x web1 lxc launch ubuntu:x web2 lxc launch ubuntu:x haproxy

因为这是我们第一次创建容器,所以第一个命令从网络下载容器映像。接下来的两个容器创建速度要快得多。

在这里,您可以看到创建容器web1的示例输出结果。

Creating web1 Retrieving image: 100% Starting web1

现在我们已经创建了三个空的vanilla容器,让我们使用lxc list命令来显示有关它们的信息:

lxc list

输出结果显示为一个表,其中包含每个容器的名称,其当前状态,IP地址,类型以及是否存在快照。

+---------+---------+-----------------------+------+------------+-----------+ | NAME | STATE | IPV4 | IPV6 | TYPE | SNAPSHOTS | +---------+---------+-----------------------+------+------------+-----------+ | haproxy | RUNNING | 10.10.10.10 (eth0) | | PERSISTENT | 0 | +---------+---------+-----------------------+------+------------+-----------+ | web1 | RUNNING | 10.10.10.100 (eth0) | | PERSISTENT | 0 | +---------+---------+-----------------------+------+------------+-----------+ | web2 | RUNNING | 10.10.10.200 (eth0) | | PERSISTENT | 0 | +---------+---------+-----------------------+------+------------+-----------+

记下容器名称及其对应的IPv4地址。您需要它们来配置您的服务。

第四步 - 配置Nginx容器

让我们连接到web1容器并配置第一个Web服务器。

要进行连接,我们使用 lxc exec命令,该命令需要容器的名称和要执行的命令。执行以下命令以连接到容器:

lxc exec web1 -- sudo --login --user ubuntu

--字符串表示该命令参数lxc应该停在那里,如在容器内将要执行的命令的行的其余部分将被传递。该命令是sudo --login --user ubuntu,它为容器内的预配置帐户ubuntu提供登录shell 。

注意:如果需要以root身份连接到容器,则可以使用lxc exec web1 --/bin/bash命令。

进入容器后,我们的shell提示现在如下所示。

ubuntu@web1:~$

容器中的这个ubuntu用户具有sudo访问权限,并且可以在不提供密码的情况下运行sudo命令。这个shell限制在容器的范围内。我们在此shell中运行的任何内容都保留在容器中,无法转义到主机服务器。

让我们更新容器内Ubuntu实例的包列表并安装Nginx:

sudo apt-get update sudo apt-get install nginx

让我们编辑此站点的默认网页,并添加一些文本,清楚地表明该站点是在web1容器中托管的。打开文件/var/www/html/index.nginx-debian.html:

sudo nano /var/www/html/index.nginx-debian.html

对文件进行以下更改:

<!DOCTYPE html> <html> <head> <title>Welcome to nginx on LXD container web1!</title> <style> body { width: 35em; margin: 0 auto; font-family: Tahoma, Verdana, Arial, sans-serif; } </style> </head> <body> <h1>Welcome to nginx on LXD container web1!</h1> <p>If you see this page, the nginx web server is successfully installed and working. Further configuration is required.</p> ...

我们在两个地方编辑了文件,并在on LXD container web1上专门添加了文本。保存文件并退出编辑器。

现在注销容器并返回主机服务器:

logout

对web2容器重复此步骤。登录,安装Nginx,然后编辑文件/var/www/html/index.nginx-debian.html以及使用web2。然后退出web2容器。

让我们使用curl来测试容器中的Web服务器是否正常工作。我们需要先前显示的Web容器的IP地址。

curl

输出结果应该是:

<!DOCTYPE html> <html> <head> <title>Welcome to nginx on LXD container web1!</title> <style> body { width: 35em; margin: 0 auto; font-family: Tahoma, Verdana, Arial, sans-serif; } </style> </head> <body> <h1>Welcome to nginx on LXD container web1!</h1> <p>If you see this page, the nginx web server is successfully installed and working. Further configuration is required.</p> ...

同样测试第二个容器,使用curl命令及其IP地址验证它是否也正确设置。配置好两个容器后,我们可以继续设置HAProxy。

第五步 - 配置HAProxy容器

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wsxsdw.html