所以我找到了 Juju,它看起来很棒!然而,对我来说最大的障碍是不知道如何设置 DNS。
我有一台运行 Ubuntu 14.04LTS 的专用服务器,安装了 JuJu,运行本地容器。但是,我无法从互联网访问它们中的任何一个。理想情况下,我想使用现有域并将它们映射到在 JuJu 上运行的服务,例如 Worpdress、MediaWiki 等。
我只有一个公共 IP 地址(IPv4 但 IPv6 有一个 /64 块),我想计划是将 charms 映射到特定端口,然后使用名称服务器来处理端口解析。
我习惯使用 Plesk、cPanel 和 VestaCP。我是否只需部署/创建 BIND/Webmin Charm 即可轻松进行 DNS 映射,还是我完全偏离了主题?
为了清楚起见,我想在我的注册商处设置自定义名称服务器到服务器 IP(ns1.example.com、ns2.example.com),并将域、子域等路由到特定端口(例如在端口 8080 上运行的 Wordpress 转到名称 example2.com)
谢谢!
答案1
您使用的是本地提供程序,它仅适用于开发和测试场景。首先,正如您所发现的,这些容器获得的地址仅限于本地。
如果你只有一个 IPv4 地址,并且想要使用它,那么你必须使用一些 iptables NAT 规则。你也许可以https://github.com/cmars/juju-nat但我个人还没用过。
使用 juju 时,您必须选择一个提供商。选择基本上是云和非云。在非云中:
- 手动的:安装操作系统、ssh 服务器,并告诉 juju 使用该机器。它可以是一台真实机器,也可以是容器、KVM 实例等。
- 玛雅斯:更复杂但更强大,使用 MAAS 您可以使用真实机器来部署 juju 服务并管理 DHCP 和 DNS。
您可能可以尝试手动提供程序,但顾名思义,它有点手动。但如果您正确设置了 IP 和 NAT 规则,它可能就是您所需要的。一旦您开始处理更多动态服务,它就失去了吸引力,因为您必须不断手动配置新机器供 juju 使用。
答案2
我有同样的 juju 部署问题。我已经做的是使用 Apache2 将多个 http / https 服务整合到不同的 URL 下。这是安装在我服务器上的 /etc/apache2/sites-available 上的配置片段。它允许将单个域名上的公共 URL 重新路由到任何私有地址。
在我的设置中,有一个可用的私有 DNS,因此我只需将请求路由到名为“jeedom”的机器,但我仍然不知道如何为使用 Juju 创建的机器分配私有名称。如果 Juju 单元的 IP 稳定,则可以指定 IP。我确信这个本地 DNS 问题有一个简单的答案,因为在 AWS 上,所有虚拟机都有名称(甚至是公共名称)。
<IfModule mod_ssl.c>
<IfModule mod_proxy.c>
<VirtualHost *:443>
ServerAdmin <<email of admin here>>
ServerName <<public server DNS>>
# Does not really matter
DocumentRoot /var/www
# SSL specific configuration (there are other ways to configure ssl)
CustomLog ${APACHE_LOG_DIR}/ssl_request.log \
"%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
# See default-ssl site configuration fragment for details.
SSLEngine on
SSLCertificateFile /etc/ssl/certs/public.crt
SSLCertificateKeyFile /etc/ssl/private/key.pem
SSLCertificateChainFile /etc/apache2/ssl.crt/1_root_bundle.crt
# Proxy to jeedom configuration
# This configuration forwards all https://<<public domain name>>/jeedom urls
# to the jeedom embedded web server login screen.
# Jeedom is a home automation system running on a RaspPi on the LAN
ProxyRequests off
<Location />
ProxyPass http://jeedom/
ProxyPassReverse http://jeedom/
</Location>
# Empty virtual host configuration
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
#CustomLog ${APACHE_LOG_DIR}/access.log combined