我有一堆在 Grizzly 上运行的 openstack VM。我需要更改他们当前由 cloud-init 管理的域。如何更新用户数据?
dmourati's questions
我们的 LAN 遇到了一个令人沮丧的问题。周期性地,对我们的 ISP 域名服务器的 DNS 查询超时,强制延迟 5 秒。即使我/etc/resolv.conf
通过直接挖掘到我们的一台 DNS 服务器来绕过,我仍然会遇到问题。这是一个例子:
mv-m-dmouratis:~ dmourati$ time dig www.google.com @209.81.9.1
; <<>> DiG 9.8.3-P1 <<>> www.google.com @209.81.9.1
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 14473
;; flags: qr rd ra; QUERY: 1, ANSWER: 5, AUTHORITY: 4, ADDITIONAL: 4
;; QUESTION SECTION:
;www.google.com. IN A
;; ANSWER SECTION:
www.google.com. 174 IN A 74.125.239.148
www.google.com. 174 IN A 74.125.239.147
www.google.com. 174 IN A 74.125.239.146
www.google.com. 174 IN A 74.125.239.144
www.google.com. 174 IN A 74.125.239.145
;; AUTHORITY SECTION:
google.com. 34512 IN NS ns2.google.com.
google.com. 34512 IN NS ns1.google.com.
google.com. 34512 IN NS ns3.google.com.
google.com. 34512 IN NS ns4.google.com.
;; ADDITIONAL SECTION:
ns2.google.com. 212097 IN A 216.239.34.10
ns3.google.com. 207312 IN A 216.239.36.10
ns4.google.com. 212097 IN A 216.239.38.10
ns1.google.com. 212096 IN A 216.239.32.10
;; Query time: 8 msec
;; SERVER: 209.81.9.1#53(209.81.9.1)
;; WHEN: Fri Jul 26 14:44:25 2013
;; MSG SIZE rcvd: 248
real 0m5.015s
user 0m0.004s
sys 0m0.002s
其他时候,查询会立即响应,例如在 20 毫秒左右。我做了一个数据包跟踪并发现了一些有趣的东西。DNS 服务器正在响应,但客户端忽略初始响应,然后发送第二个相同的查询,该查询立即得到响应。
请参阅数据包跟踪。请注意与查询 (62076) 相同的源端口。
问题:是什么导致第一次 DNS 查询失败?
更新
资源:
数据包跟踪:
http://www.cloudshark.org/captures/8b1c32d9d015
Dtruss(Mac 的 strace):
https://gist.github.com/dmourati/6115180
Mountain Lion 防火墙随机延迟来自 apple.stackexchange.com 的 DNS 请求:
更新 2
System Software Overview:
System Version: OS X 10.8.4 (12E55)
Kernel Version: Darwin 12.4.0
Boot Volume: Macintosh HD
Boot Mode: Normal
Computer Name: mv-m-dmouratis
User Name: Demetri Mouratis (dmourati)
Secure Virtual Memory: Enabled
Time since boot: 43 minutes
Hardware Overview:
Model Name: MacBook Pro
Model Identifier: MacBookPro10,1
Processor Name: Intel Core i7
Processor Speed: 2.7 GHz
Number of Processors: 1
Total Number of Cores: 4
L2 Cache (per Core): 256 KB
L3 Cache: 6 MB
Memory: 16 GB
Firewall Settings:
Mode: Limit incoming connections to specific services and applications
Services:
Apple Remote Desktop: Allow all connections
Screen Sharing: Allow all connections
Applications:
com.apple.java.VisualVM.launcher: Block all connections
com.getdropbox.dropbox: Allow all connections
com.jetbrains.intellij.ce: Allow all connections
com.skype.skype: Allow all connections
com.yourcompany.Bitcoin-Qt: Allow all connections
org.m0k.transmission: Allow all connections
org.python.python: Allow all connections
Firewall Logging: Yes
Stealth Mode: No
我们有一台服务器充当(外部)用户的“投递箱”,通过 sftp/ssh 向我们上传数据。我们需要在这些文件进来时对其进行处理(gpg 解密、解压缩等)。过去,我们只是简单地处理每个用户主目录中的每个文件,而不管我们是否已经处理过它。结果证明这是浪费。我更新(重写)了我们的处理脚本以依赖如下机制:
FILESTOPROCESS=$(find -H /home/$CUST -type f -newer /home/$CUST/marker-file)
这与 a 相结合touch /home/$CUST/marker-file
效果很好,我们的工作量大大减少了。
大约一天前,我们的 SSH 服务器出现配置问题,暂时不允许用户向我们上传文件。当脚本再次运行时,它忽略了用户最初未能上传的文件,但随后使用“-p”选项通过 sftp/ssh 上传,以保留时间戳。这将文件的 c/a/mtimes 设置为比标记文件早一天左右,因此随后被忽略。
我想禁止用户使用“-p”上传,以便使用当前时间戳创建文件。
我可以在 sshd_config 中执行此操作吗?
我们使用 keepalived 来管理我们的 Linux 虚拟服务器 (LVS) 负载平衡器。LVS VIP 设置为使用在 iptables 中配置的 FWMARK。
virtual_server fwmark 300000 {
delay_loop 10
lb_algo wrr
lb_kind NAT
persistence_timeout 180
protocol TCP
real_server 10.10.35.31 {
weight 24
MISC_CHECK {
misc_path "/usr/local/sbin/check_php_wrapper.sh 10.10.35.31"
misc_timeout 30
}
}
real_server 10.10.35.32 {
weight 24
MISC_CHECK {
misc_path "/usr/local/sbin/check_php_wrapper.sh 10.10.35.32"
misc_timeout 30
}
}
real_server 10.10.35.33 {
weight 24
MISC_CHECK {
misc_path "/usr/local/sbin/check_php_wrapper.sh 10.10.35.33"
misc_timeout 30
}
}
real_server 10.10.35.34 {
weight 24
MISC_CHECK {
misc_path "/usr/local/sbin/check_php_wrapper.sh 10.10.35.34"
misc_timeout 30
}
}
}
http://www.austintek.com/LVS/LVS-HOWTO/HOWTO/LVS-HOWTO.fwmark.html
[root@lb1 ~]# iptables -L -n -v -t mangle
Chain PREROUTING (policy ACCEPT 182G packets, 114T bytes)
190M 167G MARK tcp -- * * 0.0.0.0/0 w1.x1.y1.4 multiport dports 80,443 MARK set 0x493e0
62M 58G MARK tcp -- * * 0.0.0.0/0 w1.x1.y2.4 multiport dports 80,443 MARK set 0x493e0
[root@lb1 ~]# ipvsadm -L
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
FWM 300000 wrr persistent 180
-> 10.10.35.31:0 Masq 24 1 0
-> dis2.domain.com:0 Masq 24 3 231
-> 10.10.35.33:0 Masq 24 0 208
-> 10.10.35.34:0 Masq 24 0 0
在设置 realservers 时,10.10.35.0/24 网络中某些主机的 dns 配置错误。此后,我们修复了 DNS。但是,主机继续仅显示为上面的 IP 号码 (10.10.35.31,10.10.35.33,10.10.35.34)。
[root@lb1 ~]# host 10.10.35.31 31.35.10.10.in-addr.arpa 域名指针dis1.domain.com。
操作系统是 CentOS 6.3。ipvsadm是ipvsadm-1.25-10.el6.x86_64。内核是 kernel-2.6.32-71.el6.x86_64。keepalived为keepalived-1.2.7-1.el6.x86_64。
我们怎样才能让 ipvsadm -L 通过正确的主机名列出所有真实服务器?