我看到在创建新的 Google Cloud 帐户时,防火墙规则设置为允许从所有位置到 SSH 的流量
默认允许 ssh IP 范围:0.0.0.0/0
能否安全删除这些规则,或者 Google Cloud 是否依赖于 SSH 向世界开放?
我正在通过 gcloud 命令授权实例访问 PostgreSQL:
gcloud sql instances patch blah-sql-dev --authorized-networks 10.1.1.2/32,10.1.1.3/32,.....
我在 Cloud SQL 的授权网络下看到的只是 IP 地址,而不是一个友好的名称,它实际上告诉我 IP 地址的用途。
使用 Gcloud 将 IP 地址列入白名单时,是否可以包含友好名称?
当我执行上述命令时,我看到以下消息:
The following message will be used for the patch API method.
{"project": "my-project", "name": "blah-sql-dev", "settings": {"ipConfiguration": {"authorizedNetworks": [{"value": "10.1.1.2/32"}, {"value": "10.1.1.3/32"}, ......]}}}
所以看起来必须有某种方法可以通过该"value"
字段传递一个友好的名称,但是如何通过 gcloud 命令完成呢?
我在一个谷歌云实例上运行一个 postgres 数据库,作为我们夜间构建的一部分,我们每天都会删除并重新创建它。目前这是手动完成的,我想自动化它。
gcloud compute ssh --zone europe-west2-c postgres@postgresql-dev -- "dropdb mydb"
gcloud compute ssh --zone europe-west2-c postgres@postgresql-dev -- "createdb mydb"
gcloud compute ssh --zone europe-west2-c postgres@postgresql-dev -- "psql postgres -c 'GRANT ALL PRIVILEGES ON DATABASE mydb to myuser;' "
这可以很好地删除和重新创建数据库,当我必须重新设置密码时问题就来了......
gcloud compute ssh --zone europe-west2-c postgres@postgresql-dev -- "psql postgres -c 'ALTER USER myuser WITH PASSWORD 'passwordhere' ; "
gcloud
命令已经在使用双引号,psql postgres -c
已经在使用单引号,我应该使用什么引号将密码放在引号中?
我试过转义引号,但它不起作用:
WITH PASSWORD \'passwordhere\'
错误:“\”第 1 行或附近的语法错误:ALTER USER myuser WITH PASSWORD \passwordhere'
或者
WITH PASSWORD \"passwordhere\"
bash:-c:第 0 行:寻找匹配的 `'' 时出现意外 EOF bash:-c:第 1 行:语法错误:文件意外结束
我如何逃避那些引号?
我已经使用 NGINX 在一个子域上启用了密码保护,并编写了一个可以轻松添加用户的小脚本。但是,当我输入密码时,对话框消失并立即再次弹出。
这是我的密码生成器脚本:
#!/bin/bash
if [ -z "$1" ]
then
echo "Username Expected as first param"
elif [ -z "$2" ]
then
echo "Password Expected as second param"
else
htpasswd -b /home/me/.passwords $1 $2
/etc/init.d/nginx reload
fi
跑步:
./create-password test password
我可以看到以下输出:
为用户测试添加密码
[ ok ] 重新加载 nginx 配置(通过 systemctl):nginx.service。
在里面/home/me/.passwords
我可以看到以下条目:
test:$apr1$t.LpBHkW$bEBEMK1HRBqAvvkB9cQ.I.
在我的 nginx 配置(/etc/nginx/sites-enabled/blah
)中,我有以下内容:
server {
listen 80;
server_name blah.example.com;
auth_basic "Restricted Content";
auth_basic_user_file /home/me/.passwords;
location / {
proxy_pass http://127.0.0.1:6999;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
如果我输入test
and testing
,
对话框会消失并再次弹出。
我在 NGINX 中没有看到任何错误error.log
,access.log
只显示基本上是错误 401,未经授权:
___.___.___.___ - test [16/Apr/2016:09:36:38 +0000] "GET / HTTP/1.1" 401 1421 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623
.110 Safari/537.36"
取消密码弹出窗口,我看到以下内容:
我不确定我的术语是否正确,所以让我解释一下......
如果我有一个域,test.example.com
我希望能够映射/abc
到该服务器上运行在端口上的应用程序,8080
并将另一个应用程序映射/def
到运行在端口上的应用程序8081
。
我已经用 RabbitMQ 尝试过它,我在15672
docker 内运行并公开 port ,但 NGINX 不在 Docker 内并直接在机器上运行。
docker run -d --hostname rabbitmq --name rabbitmq -p 15672:15672 rabbitmq:3-management
无论是在 Docker 内部运行还是直接在机器上运行,我相信都无关紧要,我有一个在端口上运行的应用程序15672
,我想映射到位置/rabbitmq
到目前为止我尝试过的 NGINX 配置:
server {
listen 80;
server_name test.example.com;
location /rabbitmq {
proxy_pass http://127.0.0.1:15672;
}
}
去的时候,test.example.com/rabbitmq
我看到以下内容:
我不知道那是 NGINX 的页面还是 RabbitMQ 的页面显示未找到。
在服务器上打开端口15672
我可以清楚地访问 RabbitMQ
去:15672/blah
它似乎是同一个未找到的页面,所以它一定是去 RabbitMQ。
RabbitMQ 正在侦听0.0.0.0:15672
,因此它应该可以从任何域、主机或 ip 工作。
那么我如何使test.example.com/rabbitmq
实际服务的内容test.example.com:15672
呢?
鉴于 CoreOS 旨在运行 docker 容器,我想知道是否有办法将 HTTP 负载均衡器上的后端服务直接映射到在单个 CoreOS 实例上运行的 Docker 映像。
这是我要的结构:
www.example.com/marketing -> docker:marketing-app
www.example.com/accounts -> docker:accounts-app
www.example.com/ -> docker:www-app
...
我知道这可以通过使用 Ingress 的 Kubernetes来完成- 每个 docker 容器都将被 HTTP 负载均衡器视为后端服务,这最终将用于生产;对于我的 test/qa/demo 设置,我正在寻找更简单的东西,一个大型 CoreOS 实例,运行多个 docker 容器并具有完全相同的 HTTP 负载均衡器(稍后将在 prod 中使用)指向 docker 容器CoreOS 实例。
CoreOS 有这样的功能吗?
如果没有,除了启动 NGINX 容器以将所有流量从 HTTP 负载均衡器路由到不同容器之外,我还有什么其他选择?
我在一个相当大的服务器(32GB RAM、duel SSD、Octa Core Intel 等)上运行 RabbitMQ 的单个实例,并且有大量应用程序从 RabbitMQ 发布和使用,没有任何问题。
今天早上在部署另一个应用程序时,它根本不会启动抱怨它无法连接。我减少了我的应用程序中的消费者数量,它连接得很好。查看我的 RabbitMQ 仪表板,我可以看到消费者数量固定为 900;再次增加我的应用程序中的消费者数量,并且应用程序抛出各种无法连接到 RabbitMQ 的异常。
所以看看固定在 900 的消费者数量和我所看到的行为,我猜我已经达到了某种消费者限制。
服务器以 1% 的速度空闲并查看可用的 Erlang 进程,我看到了1048576 available
,因此服务器上剩余的容量很大。
如何增加 900 个消费者的人为限制?
在尝试编译 gcc 时,我一直在用完磁盘空间,我继续创建越来越大的磁盘大小,经过 5 个小时的编译,它的磁盘空间用完了。我现在已经调整了 4 次磁盘大小,现在用 500GB 磁盘重新启动了第 4 次编译步骤。
当我跑去df -h
查看使用了多少空间时,它只显示 9.7GB,但这被认为是 100%。
我以为可能有另一个磁盘,但我只看到sda
它的分区
ls /dev/sd*
/dev/sda /dev/sda1
那么我的磁盘实际上是 500GB 大小并且df
只是报告错误(在这种情况下,编译 gcc 会占用整个 500GB)还是 Google Cloud 的仪表板报告错误,df
报告正确并且编译 gcc 不会占用 500GB?
无论哪种方式,除非我应该做些什么来利用 500GB(顺便说一句,这是违反直觉的),我猜这是一个错误?
(发帖前搜索过,只看到AWS相关的问题)
更新 - lsblk 解释它:
lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 500G 0 disk
└─sda1 8:1 0 10G 0 part /