最近在学习网站架构的搭建,自己用4台虚拟机搭建了一个简单的网站架构,非常简单,适合入门。
下面这个示例使用BIND9做DNS服务器,NGINX做负载均衡,后台服务器是APACHE。安装过程就不说了,直接贴配置,让初学者对网站架构有个初步的了解。
四台机器的IP 分别是:
192.168.1.104--DNS服务器+NGINX做负责均衡
192.168.1.105--PAACHE服务器
192.168.1.110--PAACHE服务器
192.168.1.111--PAACHE服务器
=============================
192.168.1.104 BIND9.5.2
安装好bind9后,用named 命令启动bind服务(named -g 查看启动过程信息,这个很有用)
先说明bind日志一般写在/var/log/messages,配置出错要自己查看日志,提示什么错误直接拿错误去google
named.conf 配置:
一个简单的bind,由以下黑体几个部分组成:
options {
directory "/usr/local/named/etc"; //这里指定的目录是zone文件存放的目录,如果文件zone文件不存放在这个目录,启动的时候会提示找不到文件
allow-query-cache {any;};
pid-file "named.pid";
};
key "rndc-key" {
algorithm hmac-md5;
secret "+qE+rQths2/DDa4XrHGZJQ==";
};
controls {
inet 127.0.0.1 port 953 //定义本地监听端口
allow { 127.0.0.1; } keys { "rndc-key"; };//这里只允许本地连接,要密钥才能能访问
};
logging {
channel query_log {
file "/srv/named/query.log" versions 5 size 20m;
severity info;
print-time yes;
print-category yes;
};
category queries {
query_log;
};
};
#root zone (数据区)
zone "." IN {
type hint;
file "named.root";
};
zone "localhost" IN {
type master;
file "localhost.zone";
allow-update {none;};
};
zone "0.0.127.in-addr.arpa" IN {
type master;
file "named.local";
allow-update {none;};
};
zone "formyz.cn" IN {
type master;
file "formyz.cn.zone";
allow-update {none;};
};
上面zone指定的几个文件的内容如下:
[[email protected] named]# cat etc/localhost.zone
$TTL 86400
$ORIGIN localhost.
@ 1D IN SOA @ root (
42
3H
15M
1W
1D
)
1D IN NS @
1D IN A 127.0.0.1
[[email protected] named]# cat etc/named.local
$TTL 86400
@ IN SOA localhost. root.localhost. (
2006121601
3H
15M
1W
1D )
IN NS localhost.
1 IN PTR localhost
[[email protected] named]#cat etc/formyz.cn.zone
$TTL 1D
@ IN SOA ns1.formyz.cn. root.ns1.formyz.cn. (
2009071966
3H
15M
2W
1D )
IN NS ns1.formyz.cn.
IN NS ns2.formyz.cn.
IN MX 10 mail.formyz.cn.a.
;A RECORDER
@ IN A 192.168.1.104
;ns1 IN A 192.168.1.203 //这两个随便写的,还是注释掉吧
;ns2 IN A 192.168.1.204
几个zone文件的配置就不解释了,网上一大堆,自己去查。
上面的key / option / control 三个选项的内容都可以用rncd-confgen命令生成,这个命令和rndc命令(用来管理named服务)都是安装好bind9就有的了。比如我安装到/usr/local/named,命令就在这个目录的sbin下面,配置文件在这个目录的etc下。cd /usr/local/named/sbin , ./rndc-confgen >>named.conf 即可 。
顺便说一下,像我这样把bind安装到/usr/local/named目录的,系统环境没有这个路径,找不到named服务的,也就是不能直接用named命令,怎么办?不想配置环境就这样建个软连接就可以了:
ln -s /usr/local/named/sbin/named /sbin/named
查看一下我们的软链接有没有正确:
[[email protected] named]# ls -l /sbin/named
lrwxrwxrwx. 1 root root 27 May 4 17:13 /sbin/named -> /usr/local/named/sbin/named
同里,rndc这些命令也可以这样建立一个软连接来使用。
[[email protected] named]# cat /etc/resolv.conf
; generated by /sbin/dhclient-script
nameserver 192.168.1.104 //在这里添加DNS服务器才可以用
nameserver 192.168.1.1
至此,可以正常使用BIND服务了:
[[email protected] named]# nslookup formyz.cn
Server: 192.168.1.104
Address: 192.168.1.104#53
Name: formyz.cn
Address: 192.168.1.104
====================================
192.168.1.104 NGINX负载均衡
编译安装过程省略。
nginx.conf配置:
#user nobody;
worker_processes 4;
#error_log logs/error.log;
error_log logs/error.log warn;
#error_log logs/error.log info;
pid logs/nginx.pid;
events {
use epoll;
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
log_format main ‘$remote_addr - $remote_user [$time_local] "$request" ‘
‘$status $body_bytes_sent "$http_referer" ‘
‘"$http_user_agent" "$http_x_forwarded_for"‘;
access_log logs/access.log main;
sendfile on;
tcp_nopush on;
keepalive_timeout 65;
upstream webservers {
server 192.168.1.104:8080 ;//如果这个安装nginx的服务器只做请求分发,可以不要这行,加了这行表示这个服务器本身也提供请求处理服务,要很下面红色字体的server{ }一起使用
server 192.168.1.105:80 ;
server 192.168.1.110:80 ;
server 192.168.1.111:80 ; //我们这里没有设置权重weight的值,服务器会做轮询的负载均衡
}
server {
listen 80;
server_name www.formyz.cn;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
proxy_pass http://webservers;//
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forward-For $proxy_add_x_forwarded_for;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
server {
listen 8080;
server_name www.formyz.cn ;
location / {
root html;
index index.html index.htm;
}
}
}
最主要是upstrame 和server location 里面的设置。
===================================
后面三台服务器只是简单的安装了APACHE服务,太简单了,这里不贴出来。以后学深入一点了再单独写。
===================================
随便在任何一台虚拟机上把我们的DNS服务器添加进去(如果不添加就要在/etc/hosts文件里添加 192.168.1.104 formyz.cn这么一条,否则找不到我们的服务器),就可以用域名访问我们的网站了。我这里直接用elinks 来访问
这是我们192.168.1.104这个安装了ngixn的服务器
第二次用elinks访问
第三次访问
第四次访问
每一次都访问到不同的服务器,刚好也符合我们轮询的顺序。
这里最主要是搞清楚一个网站的完整的架设流程,没多深入的研究。现在刚开始没多少就,记录一下,也给需要的朋友借鉴一下。