在CentOS 7上使用Docker Swarm(CE)进行粘性会话
使用其他系统?简介Docker Swarm将您的单个服务器转变为计算机集群,从而促进扩展,高可用性和扩展性。
LXC容器(Linux容器)是Linux中的一种操作系统功能,可用于在单个主机上运行多个隔离的Linux系统。
这些说明将引导您完成隔离Linux容器托管的服务器配置的基本步骤。我们将配置以下功能:
ssh [email protected]
和ssh [email protected]
本指南假定:
在本教程的最后,我们将获得两个虚拟容器,这些容器可以访问Internet,但不能相互ping通。我们还将配置端口转发example.com
到容器。我们将借助Proxmox数据包中的工具来部署安全的配置和管理面板。
我们将仅使用Proxmox来管理LXC容器。通常,它也支持KVM,但是Vultr上禁止嵌套虚拟化。开始之前,应从官方网站下载Proxmox ISO。我们将使用Proxmox VE 5.0 ISO Installer
。使用默认设置从映像安装操作系统,然后重新引导虚拟机。另外,您可以从源代码手动安装proxmox,但在大多数情况下不是必需的(请按照此处的说明进行操作)。
通过SSH连接到主机,更新proxmox模板列表,并下载适用于容器的模板。
apt-get update
pveam update
pveam available
pveam download local ubuntu-14.04-standard_14.04-1_amd64.tar.gz
现在,我们需要创建一个Linux容器,其网络接口连接到linux桥。打开/etc/network/interfaces
并添加以下行:
auto vmbr1
iface vmbr1 inet static
address 10.100.0.1
netmask 255.255.255.0
bridge_ports none
bridge_stp off
bridge_fd 0
系统重新引导后,您可以从Ubuntu 14.04
模板创建一个新的容器。
pct create 200 /var/lib/vz/template/cache/ubuntu-14.04-standard_14.04-1_amd64.tar.gz -storage local-lvm -net0 name=eth0,bridge=vmbr1,ip=10.100.0.200/24,gw=10.100.0.1
您可以使用验证容器,使用来pct list
启动容器#200 pct start 200
并使用输入外壳pct enter 200
。您也可以使用验证网络设置和地址ip addr
。
要在您的容器内提供Internet连接,我们需要启用NAT
。下面将允许通过NAT技术将流量从容器转发到Internet。所述vmbr0
桥连接到所述外部接口和所述vmbr1
桥连接到所述容器。
sysctl -w net.ipv4.ip_forward=1
iptables --table nat --append POSTROUTING --out-interface vmbr0 -j MASQUERADE
iptables --append FORWARD --in-interface vmbr1 -j ACCEPT
输入容器pct enter 200
并在其中配置Web服务器。
apt-get update
apt-get install nginx
service nginx start
exit
现在,我们需要在您的服务器上配置Nginx,以将网站代理到容器中。
apt-get update
apt-get install nginx
创建/etc/nginx/sites-available/box200
具有以下内容的新配置文件:
server {
listen 80;
server_name server200.example.com;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
location / {
proxy_pass http://10.100.0.200/;
}
}
Nginx现在将代理server200.example.com
从服务器到IP为10.100.0.200的容器的每个HTTP请求。激活此配置。
ln -s /etc/nginx/sites-available/box200 /etc/nginx/sites-enabled/
service nginx restart
如果要提供对沙箱的轻松访问,则需要将SSH会话转发到容器中。为此,请在根服务器上创建一个新用户。不要忘记输入密码,不需要其他参数。
adduser box200
su - box200
ssh-keygen
cat .ssh/id_rsa.pub
exit
复制此SSH密钥,然后输入容器以附加密钥。
pct enter 200
mkdir .ssh
nano .ssh/authorized_keys
exit
在您的服务器上,将以下行添加到.ssh/authorized_keys
文件中。
command="ssh [email protected]",no-X11-forwarding,no-agent-forwarding,no-port-forwarding <YOUR SSH KEY>
不要忘记更改<YOUR SSH KEY>
您的家庭公共密钥。或者,您可以从命令行运行以下命令。
echo 'command="ssh [email protected]",no-X11-forwarding,no-agent-forwarding,no-port-forwarding <YOUR SSH KEY>' >> .ssh/authorized_keys
然后,您可以使用ssh连接到沙箱。
`ssh box200@<your_server_IP>`
现在是实现一些安全性改进的时候了。首先,我们要更改默认的SSH端口。然后,我们要使用基本的HTTP验证来保护Proxmox管理页面。
nano /etc/ssh/sshd_config
取消注释并更改行
#Port 22
至
Port 24000
重新启动ssh。
service ssh restart
使用新端口重新连接到ssh。
ssh root@<your_IP> -p 24000
创建文件/etc/default/pveproxy
。
ALLOW_FROM="127.0.0.1"
DENY_FROM="all"
POLICY="allow"
重新启动pveproxy
以使更改生效。
/etc/init.d/pveproxy restart
配置nginx(如果您之前没有做过的话)。
apt-get install nginx
service nginx restart
在中创建默认配置/etc/nginx/site-available/default
。
server {
listen 80;
server_name example.com;
rewrite ^ https://$hostname.example.com$request_uri? permanent;
}
server {
listen 443 ssl;
server_name example.com;
#auth_basic "Restricted";
#auth_basic_user_file htpasswd;
#location / { proxy_pass https://127.0.0.1:8006; }
}
获取有效的SSL证书并更新您的nginx配置。例如,可以在certbox和letencrypt的帮助下完成此操作。有关更多信息,请单击此处。
wget https://dl.eff.org/certbot-auto
chmod +x certbot-auto
./certbot-auto --nginx
现在,您的nginx配置应该看起来像这样(或者您可以在之后手动更改它)。不要忘记取消对ssl,auth和location行的注释。
server {
listen 80;
server_name example.com;
rewrite ^ https://$hostname.example.com$request_uri? permanent;
}
server {
listen 443 ssl;
server_name example.com;
ssl on;
auth_basic "Restricted";
auth_basic_user_file htpasswd;
location / { proxy_pass https://127.0.0.1:8006; }
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; # managed by Certbot
}
/etc/htpasswd
使用Htpasswd生成器创建一个文件。
nano /etc/nginx/htpasswd
重新启动Nginx
service nginx restart
现在,您可以https://example.com
在基本身份验证后查看管理控制台。
现在,HTTP请求和SSH可以使用这些容器。现在,我们可以配置从外部服务器到容器的端口转发。例如,对于映射example.com:8080
到10.100.0.200:3000
输入以下。
iptables -t nat -A PREROUTING -i vmbr0 -p tcp --dport 8080 -j DNAT --to 10.100.0.200:3000
您可以查看当前规则。
`iptables -t nat -v -L PREROUTING -n --line-number`
您也可以使用以下数字删除规则。
`iptables -t nat -D PREROUTING <#>`.
现在,我们可以从另一个容器访问一个容器。
pct create 250 /var/lib/vz/template/cache/ubuntu-14.04-standard_14.04-1_amd64.tar.gz -storage local-lvm -net0 name=eth0,bridge=vmbr1,ip=10.100.0.250/24,gw=10.100.0.1
pct start 250
pct enter 250
ping 10.100.0.200
如果要限制从容器250到200的访问,则需要将每个容器连接到个人网桥,并禁用网桥之间的转发。
删除现有容器。
pct stop 200
pct stop 250
pct destroy 200
pct destroy 250
更改的内容/etc/network/interfaces
。
auto vmbr1
iface vmbr1 inet static
address 10.100.1.1
netmask 255.255.255.0
bridge_ports none
bridge_stp off
bridge_fd 0
auto vmbr2
iface vmbr2 inet static
address 10.100.2.1
netmask 255.255.255.0
bridge_ports none
bridge_stp off
bridge_fd 0
reboot
系统
启用转发
`sysctl -w net.ipv4.ip_forward=1`
要使这些更改永久生效,您可以编辑/etc/sysctl.conf
文件并找到以下文本。
#net.ipv4.ip_forward=1
取消注释。
net.ipv4.ip_forward=1
您也可以运行sysctl -p
以使更改立即生效。
创建容器。
pct create 200 /var/lib/vz/template/cache/ubuntu-14.04-standard_14.04-1_amd64.tar.gz -storage local-lvm -net0 name=eth0,bridge=vmbr1,ip=10.100.1.200/24,gw=10.100.1.1
pct create 250 /var/lib/vz/template/cache/ubuntu-14.04-standard_14.04-1_amd64.tar.gz -storage local-lvm -net0 name=eth0,bridge=vmbr2,ip=10.100.2.250/24,gw=10.100.2.1
使用pct start 200
和启动容器pct start 250
。
刷新iptables
规则。
iptables -F
启用NAT。
iptables --table nat --append POSTROUTING --out-interface vmbr0 -j MASQUERADE
vmbr0
是包含外部接口的桥。
允许从外部接口转发。
iptables --append FORWARD --in-interface vmbr0 -j ACCEPT
允许从容器转发到互联网。
iptables -A FORWARD -i vmbr1 -o vmbr0 -s 10.100.1.0/24 -j ACCEPT
iptables -A FORWARD -i vmbr2 -o vmbr0 -s 10.100.2.0/24 -j ACCEPT
删除其他转发。
iptables -A FORWARD -i vmbr1 -j DROP
iptables -A FORWARD -i vmbr2 -j DROP
现在,检查是否10.100.1.200
可以ping 8.8.8.8
但不能ping 10.100.2.250
以及10.100.2.250
可以ping 8.8.8.8
但不能ping 10.100.1.200
。
与iptables相关的命令顺序很重要。操作规则的最佳方法是使用iptables-persistent
。这个软件包可以帮助您将iptables规则保存到文件中/etc/iptables/rules.v4
,/etc/iptables/rules.v6
并且可以在系统重启后自动加载它们。只需使用以下内容安装即可。
apt-get install iptables-persistent
YES
出现提示时选择。
使用其他系统?简介Docker Swarm将您的单个服务器转变为计算机集群,从而促进扩展,高可用性和扩展性。
Rancher OS是围绕Docker构建的非常轻量级的Linux发行版。操作系统本身的重量约为20MB。本教程将帮助您入门和运行
借助Vultr Docker应用程序,您可以轻松地在Vultr服务器实例上部署Docker。同时,您可以方便地进行Docker管理任务
简介Docker是一个应用程序,可让我们部署作为容器运行的程序。它是用流行的Go编程语言编写的
概述RancherOS是一个非常轻量级的操作系统(仅约60 MB),它以PID 0作为运行系统服务的方式运行系统Docker守护程序。
我们都知道并喜欢Docker,这是一个在多台机器上创建,管理和分发应用程序容器的平台。Docker Inc.提供服务
使用其他系统?简介Docker是一个允许在虚拟容器内部署软件的应用程序。它写在G
本教程介绍了Docker入门的基础知识。我假设您已经安装了Docker。本教程中的步骤将适用于
本文将向您展示如何在Docker容器中部署Node应用程序。注意:本教程假定您已安装Docker并已阅读
在运行Web应用程序时,通常希望充分利用资源,而不必转换软件以使用多线程处理程序。
使用其他系统?简介Rancher是一个用于运行容器和构建私有容器服务的开源平台。牧场主是基地
Kubernetes是Google开发的开放源代码平台,用于跨服务器集群管理容器化应用程序。它以十年为基础
简介本指南将向您展示如何使用多个Alpine Linux 3.9.0服务器和Portainer创建和配置Docker群。请注意
使用其他系统?简介Docker Swarm将您的单个服务器转变为计算机集群。便于扩展,高可用性和
Harbor是一个开放源代码的企业级注册服务器,用于存储和分发Docker映像。Harbor扩展了开源Docker Distribution b
概述本文旨在帮助您立即建立Kubernetes集群并使用kubeadm运行。本指南将在以下位置部署两台服务器
前提条件Docker引擎1.8+。至少4GB的磁盘空间。至少4GB的RAM。步骤1.安装Docker为了安装SQL-Server,Docker mus
使用其他系统?Docker是一个允许部署作为容器运行的程序的应用程序。它是用流行的Go程序编写的
PHP应用程序通常由Web服务器,关系数据库系统和语言解释器本身组成。在本教程中,我们将继续学习
勒索軟件攻擊呈上升趨勢,但人工智能能否幫助應對最新的計算機病毒?AI 是答案嗎?在這裡閱讀知道是 AI 布恩還是禍根
ReactOS,一個開源和免費的操作系統,這裡有最新版本。它能否滿足現代 Windows 用戶的需求並打倒微軟?讓我們更多地了解這種老式但更新的操作系統體驗。
Whatsapp 終於為 Mac 和 Windows 用戶推出了桌面應用程序。現在您可以輕鬆地從 Windows 或 Mac 訪問 Whatsapp。適用於 Windows 8+ 和 Mac OS 10.9+
閱讀本文以了解人工智能如何在小型公司中變得流行,以及它如何增加使它們成長並為競爭對手提供優勢的可能性。
最近,Apple 發布了 macOS Catalina 10.15.4 補充更新以修復問題,但似乎該更新引起了更多問題,導致 mac 機器變磚。閱讀這篇文章以了解更多信息
大數據的13個商業數據提取工具
我們的計算機以稱為日誌文件系統的有組織的方式存儲所有數據。這是一種有效的方法,可以讓計算機在您點擊搜索時立即搜索和顯示文件。 https://wethegeek.com/?p=94116&preview=true
隨著科學的快速發展,接管了我們的大量工作,我們陷入無法解釋的奇點的風險也在增加。閱讀,奇點對我們意味著什麼。
洞察 26 種大數據分析技術:第 1 部分
過去幾十年,醫療保健領域的人工智能取得了巨大飛躍。因此,醫療保健中人工智能的未來仍在日益增長。