通过MX记录来负载均衡邮件流量
首先我们知道round robin DNS,即某个查询条件在DNS里面有多个记录时,DNS反馈解析结果的时候,记录在输出里面的顺序是随机的。
比如,我们多次查询163.com的MX记录,结果如下:
我们可以看到,163.com的MX记录有4条,3条优先级为10(较高),1条优先级为50。输出的排列顺序是随机的,这就确保相同优先级的服务器的选择是round robin的。
# dig +short mx 163.com
10 163mx03.mxmail.netease.com.
50 163mx00.mxmail.netease.com.
10 163mx01.mxmail.netease.com.
10 163mx02.mxmail.netease.com.
# dig +short mx 163.com
10 163mx01.mxmail.netease.com.
50 163mx00.mxmail.netease.com.
10 163mx02.mxmail.netease.com.
10 163mx03.mxmail.netease.com.
对于发件方(服务器或者客户端),在往某个域名发送邮件的时候,首先需要查询MX记录,如果有多条MX记录,数字最小的优先级最高,即将优先尝试投递;如果有多条优先级相同的最优MX记录,则通常排第一个的会优先被选择。为了确保邮件的可靠传输,发件方必须按顺序逐个尝试,只有在优先级高的MX记录无法投递的时候,才应该去尝试优先级低的。
除了通过多条通优先级的MX记录来实现负载均衡外。还可以通过MX记录对应的A记录来实现,比如,同样以163.com来举例,它一条MX记录有多个A记录,同样可以依靠DNS来实现round robin.
dig +short 163mx01.mxmail.netease.com
220.181.14.136
220.181.14.143
220.181.14.139
220.181.14.137
220.181.14.141
220.181.14.135
220.181.14.140
220.181.14.138
220.181.14.142
浙公网安备 33010602011771号