WEB集群6-10天
第六天 nginx编译安装
全新的进行编译安装
[root@web-1 ~]# mkdir /nginx
[root@web-1 ~]# cd /nginx/
[root@web-1 nginx]# ls
[root@web-1 nginx]#curl -O https://nginx.org/download/nginx-1.26.1.tar.gz
解压源码包
[root@web-1 nginx]#tar xf nginx-1.26.1.tar.gz
[root@web-1 nginx-1.26.1]# ls
auto CHANGES CHANGES.ru conf configure contrib html LICENSE Makefile man objs README src
configure 是一个nginx官方提供的一个进行编译配置的脚本,主要目的是收集用户的指定配置,收集参数。
例如: 用户可以指定安装位置,启用哪些模块(功能),不启用哪些模块(功能)
可以定制nginx这个软件
[root@web-2 nginx-1.26.1]# ./configure --prefix=/usr/local/nginx-1 --user=limingzhe --group=limingzhe --with-http_ssl_module --with-http_v2_module --with-threads --with-stream --with-http_stub_status_module
cat install_nginx.sh
#!/bin/bash
#创建存放nginx源码的目录
mkdir -p /nginx
#进入目录,开始下载nginx源码包
cd /nginx
curl -O https://nginx.org/download/nginx-1.26.1.tar.gz
#解压源码包
tar xf nginx-1.26.1.tar.gz
cd nginx-1.26.1
#解决依赖的软件包
yum install gcc pcre-devel openssl-devel -y
#配置工作
./configure --prefix=/usr/local/nginx-1 --user=limingzhe --group=limingzhe --with-http_ssl_module --with-http_v2_module --with-threads --with-stream --with-http_stub_status_module
#启动2个进程去编译
make -j 2
#安装编译,将前面编译好的二进制文件和配置文件复制到/usr/local/nginx-1目录下
make install
cd /usr/local/nginx-1/
conf 存放配置文件的目录
html 存放网站网页的目录
logs 存放日志的
sbin 存放二进制文件 super user binary
新建用户
[root@web-2 sbin]# useradd limingzhe -s /sbin/nologin
改良的脚本
#!/bin/bash
#创建存放nginx源码的目录
mkdir -p /nginx
#进入目录,开始下载nginx源码包
cd /nginx
curl -O https://nginx.org/download/nginx-1.26.1.tar.gz
#解压源码包
tar xf nginx-1.26.1.tar.gz
cd nginx-1.26.1
#解决依赖的软件包
yum install gcc pcre-devel openssl-devel -y
#配置工作
./configure --prefix=/usr/local/nginx-1 --user=limingzhe --group=limingzhe --with-http_ssl_module --with-http_v2_module --with-threads --with-stream --with-http_stub_status_module
#启动2个进程去编译
make -j 2
#安装编译,将前面编译好的二进制文件和配置文件复制到/usr/local/nginx-1目录下
make install
#新建用户limingzhe
useradd limingzhe -s /sbin/nologin
#修改PATH环境变量,增加nginx的安装目录,方便找到安装的nginx
echo 'PATH=/usr/local/nginx-1/sbin/:$PATH' >>/etc/profile
source /etc/profile
#启动nginx
/usr/local/nginx-1/sbin/nginx
#firewalld and selinux
#stop firewall和设置下次开机不启动firewalld
service firewalld stop
systemctl disable firewalld
#临时停止selinux和永久停止selinux
setenforce 0
sed -i '/^SELINUX=/ s/enforcing/disabled/' /etc/sysconfig/selinux
修改PATH变量
临时修改PATH变量
PATH=/usr/local/nginx-1/sbin:$PATH
永久修改PATH变量
echo 'PATH=/usr/local/nginx-1/sbin:$PATH' >>/etc/profile
在当前终端里执行脚本/etc/profile 加载PATH环境变量
source /etc/profile
[root@web-2 ~]# nginx -s stop 停止nginx服务
在web1上验证脚本是否可以执行
[root@web-1 nginx]# bash install_nginx.sh
[root@web-1 nginx]# source /etc/profile
[root@web-1 nginx]# ps aux|grep nginx
root 5195 0.0 0.2 149800 5460 pts/0 S+ 11:52 0:00 vim install_nginx.sh
root 8366 0.0 0.0 46240 1172 ? Ss 11:55 0:00 nginx: master process /usr/local/nginx-1/sbin/nginx
思考:编译安装的好处?
1. 可以获得指定的版本
2. 可以定制功能 --》巨大的优势了 --》可以根据自己公司的业务特点定制功能
阿里云、腾讯基于nginx进行了二次开发,搞出了自己的nginx服务器,阿里搞出来 tnginx(taobao nginx)
yum install nginx
配置配置/etc/nginx
可执行的nginx二进制程序 /usr/sbin/nginx
网站目录: /usr/share/nginx/html
编译安装的nginx
配置文件: /usr/local/nginx-1/conf
可执行的nginx二进制程序 /usr/local/nginx-1/sbin
网站目录: /usr/local/nginx-1/html
启动nginx
nginx
停止ningx
nginx -s stop
重启
nginx -s reload --->signal
如何知道自己的cpu的信息?
1.使用top --》1 知道cpu有多少个核心
2.cat /proc/cpuinfo
3.lscpu
PATH变量问题
PATH变量是一个环境变量,定义了linux查找命令的时候,去哪些文件夹里查找命令
[root@web-2 conf]# env |grep PATH
PATH=/usr/local/nginx-1/sbin/:/node_exporter/:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[root@web-2 conf]#
我们输入的命令在执行的时候,先到PATH变量定义的路径下查找是否有对应的命令,如果有就执行,没有就不执行,查找的时候从左往右查找
因为我们是编译安装的nginx,默认安装的位置不在PATH变量定义的文件夹里,所以我们需要去修改PATH变量,让linux系统能找到执行程序nginx这个二进制文件
yum安装的软件,默认会把执行的文件存放到PATH变量的目录下,一般在/usr/bin 或者/usr/sbin
临时修改PATH变量
PATH=/usr/local/nginx-1/sbin:$PATH
永久修改PATH变量
echo 'PATH=/usr/local/nginx-1/sbin:$PATH' >>/etc/profile
在当前终端里执行脚本/etc/profile 加载PATH环境变量
source /etc/profile
nginx开机启动的问题
1./etc/rc.local文件,linux在启动的最后阶段会执行这个脚本里的命令
/usr/local/nginx-1/sbin/nginx
[root@web-2 nginx-1]# vim /etc/rc.local
#开启自动启动编译安装的nginx
/usr/local/nginx-1/sbin/nginx
[root@web-2 nginx-1]# chmod +x /etc/rc.d/rc.local
2.创建一个 nginx.service文件,让systemctl进行管理
nginx.conf配置文件
[root@web-2 ~]# cd /usr/lib/systemd/system
[root@web-2 system]# vim nginx.service
[Unit]
Description=nginx - high performance web server
[Service]
Type=forking
PIDFile=/usr/local/nginx-1/logs/nginx.pid
ExecStart=/usr/local/nginx-1/sbin/nginx -c /usr/local/nginx-1/conf/nginx.conf
ExecReload=/bin/sh -c "/bin/kill -s HUP $(/bin/cat $PIDFile)"
ExecStop=/bin/sh -c "/bin/kill -s TERM $(/bin/cat $PIDFile)"
[Install]
WantedBy=multi-user.target
[root@web-2 system]# systemctl daemon-reload
[root@web-2 system]# systemctl stop nginx
[root@web-2 system]# ps aux|grep nginx
注释掉第1种启动nginx的方式
[root@web-2 system]# vim /etc/rc.local
开启自动启动编译安装的nginx
在编译安装的nginx里部署一个自己的网站 www.scweb.com
[root@web-2 conf]# cd /usr/local/nginx-1/conf
[root@web-2 conf]# vim nginx.conf
[root@web-2 conf]# cat nginx.conf
#user nobody;
worker_processes 2;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 2048;
}
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 0;
keepalive_timeout 65;
#gzip on;
#一个server 就是一个网站
#一个server就是一个虚拟主机(网站)
server {
#网站监听的端口
listen 80;
#网站对应的域名
server_name www.scweb.com;
#charset koi8-r;
#定义访问日志的路径和名字、记录的内容
access_log logs/scweb.access.log main;
#定义错误日志:访问网站出错的时候,服务器会记录下来
error_log logs/scweb.error.log
#定义路由 / 网站根目录
location / {
#定义网站存放网页的文件夹--》网站内容根目录 --》在/usr/local/nginx-1/html
root html;
index index.html index.htm shouye.html;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
# another virtual host using mix of IP-, name-, and port-based configuration
#
#server {
# listen 8000;
# listen somename:8080;
# server_name somename alias another.alias;
# location / {
# root html;
# index index.html index.htm;
# }
#}
# HTTPS server
#
#server {
# listen 443 ssl;
# server_name localhost;
# ssl_certificate cert.pem;
# ssl_certificate_key cert.key;
# ssl_session_cache shared:SSL:1m;
# ssl_session_timeout 5m;
# ssl_ciphers HIGH:!aNULL:!MD5;
# ssl_prefer_server_ciphers on;
# location / {
# root html;
# index index.html index.htm;
# }
#}
}
nginx -t 测试nginx.conf配置文件是否有语法错误
使用浏览器去访问
[root@web-2 html]# curl 192.168.205.135
第七天 nginx
基于域名的虚拟主机
一台nginx的服务器上部署2个网站
www.feng.com
www.wen.com
http 是超文本传输协议(Hypertext Transfer Protocol,HTTP)--》就是传输网页上的文本、图片、视频、音频等内容
cd /usr/local/nginx-1/conf
vim nginx.conf
server {
listen 80;
server_name www.feng.com;
access_log logs/feng.com.access.log;
error_log logs/feng.com.error.log;
location / {
root html/feng;
index index.html index.htm;
}
}
server {
listen 80;
server_name www.wen.com;
access_log logs/wen.com.access.log;
error_log logs/wen.com.error.log;
location / {
root html/wen;
index index.html index.htm;
}
}
去创建网站首页
cd ..
[root@web-2 nginx-1]# ls
client_body_temp conf fastcgi_temp html logs proxy_temp sbin scgi_temp uwsgi_temp
[root@web-2 nginx-1]# cd html/
mkdir wen feng 新建wen和feng文件夹
[root@web-2 html]# ls
50x.html feng index.html wen
[root@web-2 html]# cd feng
[root@web-2 feng]# ls
vim index.html 新建首页文件
[root@web-2 feng]# cat index.html
welcome to feng's website
[root@web-2 feng]# cd ..
[root@web-2 html]# cd wen
[root@web-2 wen]# vim index.html新建首页文件
[root@web-2 wen]# cat index.html
welcome to wen's website
重启nginx服务
[root@web-2 wen]# nginx -s reload
测试访问
[root@web-2 wen]# vim /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.205.135 www.scweb.com
192.168.205.135 www.feng.com
192.168.205.135 www.wen.com
[root@web-2 wen]# curl www.feng.com
welcome to feng's website
[root@web-2 wen]# curl www.wen.com
welcome to wen's website
[root@web-2 wen]# curl www.scweb.com
<!DOCTYPE html>
<html>
<head>
<title>Welcome to scweb</title>
<style>
html { color-scheme: light dark; }
body { width: 35em; margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif; }
</style>
</head>
<body>
<h1>Welcome to scweb!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>
<p><em>Thank you for using nginx.</em></p>
</body>
</html>
windows里需要修改hosts文件
192.168.205.135 www.scweb.com
192.168.205.135 www.feng.com
192.168.205.135 www.wen.com
隐藏nginx的版本
提供下载功能
修改autoindex的值为on
nginx -s reload
开启状态统计功能
cd /usr/local/nginx-1/conf/
vim nginx.conf
nginx -t
nginx -s reload
访问
http协议
HTTP协议(Hypertext Transfer Protocol,超文本传输协议)是一种用于从万维网服务器传输超文本到本地浏览器的传送协议。它是互联网上应用最为广泛的一种网络协议,也是构成互联网应用的基础。以下是关于HTTP协议的详细介绍:
一、基本介绍
定义:HTTP协议是一种应用层协议,基于TCP/IP通信协议来传送数据。HTTP协议规定了客户端和服务器之间数据传输的格式和类型,确保双方能够正确地发送和接收数据。
作用:HTTP协议主要用于在Web浏览器和Web服务器之间传输数据,是Web上进行任何数据交换的基础。它支持客户端从服务器请求资源(如HTML文档、图片、视频等),并接收服务器返回的响应。
二、主要特点
请求/响应模型:HTTP协议采用请求/响应模型,客户端向服务器发送一个请求,服务器以一个响应来回应客户端的请求。
无状态性:HTTP协议是一种无状态的协议,即服务器不会保留与客户端的任何连接状态信息,每个请求都被视为一个独立的事务。
灵活性:HTTP协议支持多种请求方法(如GET、POST、PUT、DELETE等),允许客户端对服务器上的资源进行不同的操作。
可扩展性:HTTP协议通过头部字段来携带各种元数据,如Content-Type、Content-Length等,支持协议的扩展和自定义。
三、版本演进
HTTP协议自1991年发布以来,已经历了多个版本的演进,主要包括HTTP 1.0、HTTP 1.1、HTTP 2.0和正在推进中的HTTP 3.0。每个版本都在不断优化和改进,以提高数据传输效率、连接利用率和安全性。
HTTP 1.0:最初的版本,支持持久连接(但非默认),但存在队头阻塞问题。
HTTP 1.1:引入了持久连接(默认)、管道化、分块传输编码、头部压缩等特性,提高了数据传输效率和连接利用率。
HTTP 2.0:使用二进制格式进行数据传输,支持多路复用、服务器推送、流控制和优先级等特性,进一步提高了性能。
HTTP 3.0(正在推进中):计划放弃TCP,使用UDP作为传输层协议,并通过QUIC协议实现可靠传输。这将带来更低的延迟、更快的连接建立速度和增强的安全性。
四、安全性
HTTP协议本身并不提供加密和身份验证机制,因此数据在传输过程中容易被截取和解析。为了增强安全性,通常使用HTTPS(HTTP Secure)协议来传输数据。HTTPS在HTTP的基础上增加了一层加密层(如SSL/TLS),对数据进行加密和解密处理,确保数据传输的安全性。
五、应用场景
HTTP协议广泛应用于Web开发中,是构建Web应用的基础。无论是访问网页、下载文件、提交表单还是进行在线支付等操作,都离不开HTTP协议的支持。同时,随着Web技术的不断发展,HTTP协议也在不断演进和扩展,以适应新的应用需求和技术趋势。
六、总结
HTTP协议是互联网上应用最为广泛的一种网络协议之一,它定义了客户端和服务器之间数据传输的格式和类型。通过不断优化和改进版本演进以及引入新的特性(如HTTPS加密传输、QUIC协议等),HTTP协议将继续为Web应用的发展提供坚实的支持。
URL和URI的联系
URL 统一资源定位符 (Uniform Resource Locator)
http://www.feng.com/sc/sha.html
uri 统一资源标识符 Uniform Resource Identifier )
统一资源标识符(Uniform Resource Identifier,URI)是一个用于标识某一互联网资源名称的字符串。
URL 是URI
Web上可用的每种资源 -HTML文档、图像、视频片段、程序等 - 由一个通用资源标识符(Uniform Resource Identifier, 简称URI)进行定位。
java ---》spring
python --》flask
go ---》gin 框架 ---》http协议
chrome --》http协议
python ---》requests --》http协议 --》访问网站
web网站
ssh
tcp/ip 5层模型
OSI 7层模型
7 应用层: http ssh dns
6 表示层
5 会话层
4 传输层: tcp udp
3 网络层: ip icmp arp ospf
2 数据链路层
1 物理层
应表会传往树屋
tcp 传输控制协议 : 面向连接、传输可靠(不容易丢失数据)
源端口 60162: 目的端口 80
先要建立连接,然后传输数据
3次握手
http 1.0 --》短连接 : 多次访问的时候,就需要频繁的建立连接 --》
http 1.1 -->长连接: 保存一段时间的连接,避免频繁的建立连接,消耗资源--》提高了效率
keepalive_timeout 65;
http 2.0
http 3.0
pv
你知道session和cookie吗?
请求报文
响应报文
正反向代理
yum install python3 -y
pip3 install requests 在python3里安装requests库
请求报文
User-Agent:
host
响应报文
server
code status
200 表示服务器成功返回数据给客户机
304 表示=服务器告诉客户机,网站内容没有修改,客户机浏览器缓存里的数据,和我现在服务器里的数据一模一样,直接使用缓存里的数据
404 表示客户机去访问的网页不存在
403 表示客户机没有权限去访问服务器里的网页或者文件
50* 表示nginx内部出现问题(web服务器内部出现问题)
正反向代理
get和post方法都是客户机向服务器发起请求,需要服务器给客户端数据
get 方法是在URL里传递参数,明文,可以携带的参数有限制,不能很多
post 方法 ,是body部分传递参数 ---》提交表单给服务器
第八天
负载均衡
准备的环境:
web1:192.168.205.132
web2:192.168.205.135
web3:192.168.205.136
LB-1:192.168.205.137
web1 和 web2 web3 都需要编译安装nginx 1.26.1
作用
解决大并发情况下,将流量分散到多台后端服务器上,从而解决web达不到,访问不了的问题
启动冗余的作用
负载均衡器(LB)也要编译nginx 1.26.1
1. 确认3台后端web服务器是正常提供web服务的
2、修改网站首页内容,增加标识web1、web2、web3的文字
3、配置负载均衡功能
[root@lb-1 conf]# vim nginx.conf
[root@lb-1 conf]# cat nginx.conf
worker_processes 2;
events {
worker_connections 2048;
}
http {
#定义一个负载均衡器 名字叫scweb ,会将流量分发到下面的3台服务器里
upstream scweb {
server 192.168.205.132;
server 192.168.205.135;
server 192.168.205.136;
}
#定义一个虚拟主机,对外提供web服务
server {
listen 80;
#定义一个访问网页根目录,定义一个路由,转发到scweb负载均衡配置上去处理
location / {
proxy_pass http://scweb;
}
}
}
nginx -t
nginx -s reload
4、 调用算法(负载均衡算法)
1. round-robin 轮询(轮叫) rr 非常公平
(1) 加权轮询 weight
2. least-connected 最小连接数
3. ip-hash ip_hash算法 让客户机总是访问相同的web服务器,因为客户机的ip地址没有发生变化,适合session信息保存在服务器的场景。 --》 会话持久性
5、健康检测
1. 主动检测
2. 被动检测
6、nfs
nfs: 解决访问3台web服务器看到一样的内容–》数据一致性问题
高可用: 2台负载均衡器
7、数据流过程
第九天
让后端的服务器知道前端的客户机的ip地址
步骤1:在负载均衡器上修改http请求报文头部字段,添加一个X-Real-IP字段
[root@lb-1 conf]# cat nginx.conf
worker_processes 2;
events {
worker_connections 2048;
}
http {
#定义一个负载均衡器 名字叫scweb ,会将流量分发到下面的3台服务器里
upstream scweb {
#ip_hash;
#least_conn;
server 192.168.205.132 weight=10;
server 192.168.205.135;
server 192.168.205.136;
}
#定义一个虚拟主机,对外提供web服务
server {
listen 80;
#定义一个访问网页根目录,定义一个路由,转发到scweb负载均衡配置上去处理
location / {
proxy_pass http://scweb;
#代理服务器在转发http请求报文的时候,在http请求报文的头部里增加一个字段 名字叫X-Real-IP,它的值来自客户机的ip地址
proxy_set_header X-Real-IP $remote_addr;
}
}
}
nginx -s reload
nginx -s reload
步骤2:在后端real server上使用这个x_real_ip这个字段
[root@web-1 ~]# cd /usr/local/nginx-1/conf/
[root@web-1 conf]# vim nginx.conf
http {
include mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $http_x_real_ip - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
server {
listen 80;
server_name localhost;
#charset koi8-r;
access_log logs/host.access.log main;
location / {
root html;
index index.html index.htm;
}
[root@web-1 conf]# nginx -s reload
转发功能,转发到go server上,中台功能
一台服务器里运行了2个web服务器
1. nginx 静态页面 --》80
2. go 动态页面 --》8080
当用户访问nginx的80端口的时候,转发请求到go语言写的网站的8080端口上
启动go server
[root@web-1 system]# cd /web/
[root@web-1 web]# ls
go+html+mysql+redis.zip go.mod go.sum info.sql nohup.out Readme.md server server.go static templates
[root@web-1 web]# nohup ./server &
[1] 1618
[root@web-1 web]# nohup: 忽略输入并把输出追加到"nohup.out"
在nginx服务器上配置转发功能
[root@web-1 conf]# nginx -t
nginx: the configuration file /usr/local/nginx-1/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx-1/conf/nginx.conf test is successful
[root@web-1 conf]# nginx -s reload
[root@web-1 conf]#
也可以转发到www.jd.com 或者www.taobao.com
中台路由转发功能
需要到web2服务器上的网页根目录下新建sc文件夹,同时sc文件夹里新建index.html文件
500错误
open to many files -->因为linux内核限制一个进程默认情况下只能打开1024个
在nginx里的主配置文件里设置了一个worker进程可以起2048个连接(2048个线程)
worker_processes 8;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 2048;
}
通过给内核传递参数,这是一个进程可以打开100000个文件
临时修改
[root@web-2 sc]# ulimit -n 100000
[root@web-2 sc]# ulimit -n 1000000
永久修改ulimit参数
1. 修改/etc/security/limits.conf
* soft nofile 100000
* hard nofile 100000
[root@web-2 sc]# reboot
502 bad gateway 负载均衡器后面的backend server全部挂了,负载均衡器还是好的
高可用
高可用-->HA High Availability --》有备份
keepalived
准备一台服务器,直接使用LB1服务器克隆
因为LB1服务器上已经安装了nginx,只要安装keepalived软件
LB1:192.168.205.137
LB2:192.168.205.138
keepalived
介绍
keepalive是一个用c语言编写的路由软件,这个项目的主要目标是为Linux系统和基于Linux的基础设施提供简单而健壮的负载平衡和高可用性设施。
keepalived是一个路由软件,有2个功能:
1. loadbalancing 负载均衡 ---》内核里的ipvs软件---》内置到内核里了,不需要安装
2. 高可用 high-availability ---》VRRP协议 high-availability is achieved by VRRP protocol.
(1) VRRP协议:虚拟路由冗余协议
安装keepalived软件
[root@lb-1 ~]# yum install keepalived -y
[root@lb-2 ~]# yum install keepalived -y
[root@lb-1 ~]# cd /etc/keepalived/
[root@lb-1 keepalived]# ls
keepalived.conf
[root@lb-1 keepalived]#
Keepalived.conf配置文件的解析
[root@centos-LB-1 keepalived]# vim keepalived.conf
#vrrp_strict 注释掉,遵守最严格的vrrp协议
#这是实现高可用的配置
vrrp_instance VI_1 { 启动一个vrrp的实例 VI_1 实例名,可以自定义,一个实例背后就是一个keepalived相关的进程
state MASTER --》角色是master backup
interface ens33 --》在哪个接口上监听vrrp协议,同时绑定vip到那个接口
virtual_router_id 105 --》虚拟路由id(帮派) 0~255范围
priority 120 ---》优先级 0~255
advert_int 1 --》advert interval 宣告消息 时间间隔 1秒
authentication { 认证
auth_type PASS 认证的类型是密码认证
auth_pass 11112222 具体的密码,可以自己修改
}
virtual_ipaddress { --》vip的配置,vip可以是多个ip,也可以是一个vip
192.168.200.16
192.168.200.17
192.168.200.18
}
}
[root@lb-2 keepalived]# cat keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 192.168.200.1
smtp_connect_timeout 30
router_id LVS_DEVEL
vrrp_skip_check_adv_addr
#vrrp_strict
vrrp_garp_interval 0
vrrp_gna_interval 0
}
vrrp_instance VI_1 {
state BACKUP
interface ens33
virtual_router_id 88
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.205.188
}
}
[root@lb-2 keepalived]#
[root@lb-1 keepalived]# cat keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 192.168.200.1
smtp_connect_timeout 30
router_id LVS_DEVEL
vrrp_skip_check_adv_addr
#vrrp_strict
vrrp_garp_interval 0
vrrp_gna_interval 0
}
vrrp_instance VI_1 {
state MASTER
interface ens33
virtual_router_id 88
priority 120
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.205.188
}
}
启动keepalived服务
[root@lb-1 keepalived]# systemctl start keepalived
[root@lb-1 keepalived]# systemctl enable keepalived
Created symlink from /etc/systemd/system/multi-user.target.wants/keepalived.service to /usr/lib/systemd/system/keepalived.service.
[root@lb-1 keepalived]#
[root@lb-2 keepalived]# systemctl start keepalived
[root@lb-2 keepalived]# systemctl enable keepalived
Created symlink from /etc/systemd/system/multi-user.target.wants/keepalived.service to /usr/lib/systemd/system/keepalived.service.
查看vip在哪台服务器上
[root@lb-1 keepalived]# ip add
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:1a:1b:5d brd ff:ff:ff:ff:ff:ff
inet 192.168.205.137/24 brd 192.168.205.255 scope global noprefixroute ens33
valid_lft forever preferred_lft forever
inet 192.168.205.188/32 scope global ens33
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fe1a:1b5d/64 scope link
valid_lft forever preferred_lft forever
确保nginx负载均衡功能是正常运行的
[root@lb-1 conf]# ps aux|grep nginx
[root@lb-2 keepalived]# ps aux|grep nginx
查看负载均衡的配置
[root@lb-2 keepalived]# [root@lb-1 conf]# vim nginx.conf
http {
#定义一个负载均衡器 名字叫scweb ,会将流量分发到下面的3台服务器里
upstream scweb {
#ip_hash;
#least_conn;
#server 192.168.205.132:8080 weight=10;
#server 192.168.205.132:80 weight=10;
server 192.168.205.135;
server 192.168.205.136;
}
验证2台负载均衡器都是好的
对外我们只公布有vip地址的负载均衡器,本项目里发布LB-1
[root@lb-1 conf]# ip add
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:1a:1b:5d brd ff:ff:ff:ff:ff:ff
inet 192.168.205.137/24 brd 192.168.205.255 scope global noprefixroute ens33
valid_lft forever preferred_lft forever
inet 192.168.205.188/32 scope global ens33
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fe1a:1b5d/64 scope link
valid_lft forever preferred_lft forever
[root@lb-1 conf]#
正如您所做的,使用ip add或ip addr show命令来查看网络接口上分配的所有IP地址。如果Keepalived正常工作并且该节点是当前的MASTER,则VIP(例如192.168.205.188)应该显示在其中的一个网络接口上。
根据您提供的信息,似乎192.168.205.188已经被配置到了ens33接口上,这意味着Keepalived可能已经在控制这个VIP。为了进一步确认,可以尝试检查Keepalived的日志文件(通常位于/var/log/messages或通过journalctl -u keepalived查看),以确保没有错误发生,并且Keepalived正在按照预期工作。
对外公布vip 192.168.205.188地址访问
验证vip漂移
systemctl stop keepalived 模拟LB1服务器down机
[root@lb-1 conf]# ip add
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:1a:1b:5d brd ff:ff:ff:ff:ff:ff
inet 192.168.205.137/24 brd 192.168.205.255 scope global noprefixroute ens33
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fe1a:1b5d/64 scope link
valid_lft forever preferred_lft forever
LB2上就有vip了
[root@lb-2 conf]# ip add
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:e7:94:6b brd ff:ff:ff:ff:ff:ff
inet 192.168.205.138/24 brd 192.168.205.255 scope global noprefixroute ens33
valid_lft forever preferred_lft forever
inet 192.168.205.188/32 scope global ens33
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fee7:946b/64 scope link
valid_lft forever preferred_lft forever
[root@lb-2 conf]#
选举过程
双vip架构
[root@lb-1 keepalived]# cat keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 192.168.200.1
smtp_connect_timeout 30
router_id LVS_DEVEL
vrrp_skip_check_adv_addr
#vrrp_strict
vrrp_garp_interval 0
vrrp_gna_interval 0
}
vrrp_instance VI_1 {
state MASTER
interface ens33
virtual_router_id 88
priority 120
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.205.188
}
}
vrrp_instance VI_2 {
state BACKUP
interface ens33
virtual_router_id 99
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.205.199
}
}
[root@lb-2 keepalived]# cat keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 192.168.200.1
smtp_connect_timeout 30
router_id LVS_DEVEL
vrrp_skip_check_adv_addr
#vrrp_strict
vrrp_garp_interval 0
vrrp_gna_interval 0
}
vrrp_instance VI_1 {
state BACKUP
interface ens33
virtual_router_id 88
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.205.188
}
}
vrrp_instance VI_2 {
state MASTER
interface ens33
virtual_router_id 99
priority 120
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.205.199
}
}
[root@lb-2 keepalived]# systemctl restart keepalived
[root@lb-2 keepalived]# ip add
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:e7:94:6b brd ff:ff:ff:ff:ff:ff
inet 192.168.205.138/24 brd 192.168.205.255 scope global noprefixroute ens33
valid_lft forever preferred_lft forever
inet 192.168.205.199/32 scope global ens33
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fee7:946b/64 scope link
valid_lft forever preferred_lft forever
[root@lb-1 keepalived]# systemctl restart keepalived
[root@lb-1 keepalived]# ip add
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:1a:1b:5d brd ff:ff:ff:ff:ff:ff
inet 192.168.205.137/24 brd 192.168.205.255 scope global noprefixroute ens33
valid_lft forever preferred_lft forever
inet 192.168.205.188/32 scope global ens33
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fe1a:1b5d/64 scope link
valid_lft forever preferred_lft forever
[root@lb-1 keepalived]#
脑裂
脑裂: 就是2台或者多台LB上都有vip地址
原因:
脑裂现象:
1.vrid(虚拟路由id)不一样
2.网络通信有问题:中间有防火墙阻止了网络之间的选举的过程,vrrp报文的通信
3.认证密码不一样也会出现脑裂
脑裂有没有危害?是否对业务有危害或者对业务有什么影响?
答案:
没有危害,能正常访问,反而还有负载均衡的作用
脑裂恢复的时候,还是有影响的,会短暂的中断,影响业务的
nfs的问题
第十天 DNS服务器
1、介绍
DNS 是域名解析系统 domain name system
用来将域名解析到ip,也可以将ip解析到域名
正向解析:域名解析到ip --》多
反向解析:ip解析到域名
因为网络通信过程中使用的ip地址,但是ip地址不好记忆,名字好记,因此开发出来一套系统,给人使用,将域名解析到对应的ip地址。
2、dns服务器的搭建,选择在ansible+Prometheus+nfs服务器(综合服务器)
3、安装软件bind —》加州大学伯克利分校 Berkeley Internet Name Daemon --》BSD ulinx
[root@ansible-prome bin]# yum install bind bind-utils -y
启动named服务
[root@nfs-ansible-prom prom]# service named restart
Redirecting to /bin/systemctl restart named.service
设置named服务开机启动
[root@nfs-ansible-prom prom]# systemctl enable named
Created symlink from /etc/systemd/system/multi-user.target.wants/named.service to /usr/lib/systemd/system/named.service.
[root@nfs-ansible-prom prom]#
查看进程
[root@nfs-ansible-prom prom]# ps aux|grep named
named 14125 0.1 1.4 242032 57676 ? Ssl 16:34 0:00 /usr/sbin/named -u named -c /etc/named.conf
root 14151 0.0 0.0 112824 976 pts/0 S+ 16:35 0:00 grep --color=auto named
查看开放udp 53号端口
[root@nfs-ansible-prom prom]# netstat -anplut|grep named
tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 14125/named
tcp 0 0 127.0.0.1:953 0.0.0.0:* LISTEN 14125/named
tcp6 0 0 ::1:53 :::* LISTEN 14125/named
tcp6 0 0 ::1:953 :::* LISTEN 14125/named
udp 0 0 127.0.0.1:53 0.0.0.0:* 14125/named
udp6 0 0 ::1:53 :::* 14125/named
[root@nfs-ansible-prom prom]#
域名解析的时候,采用udp方式访问dns服务器的–》udp 速度快,效率高
测试 dns服务能否使用,默认情况下,dns服务器只给自己做解析,不给其他的服务器做解析。
[root@ansible-prome bin]# vim /etc/resolv.conf
#nameserver 114.114.114.114
#nameserver 222.246.129.80
nameserver 127.0.0.1
[root@ansible-prome bin]# nslookup www.baidu.com
Server: 127.0.0.1
Address: 127.0.0.1#53
Non-authoritative answer:
www.baidu.com canonical name = www.a.shifen.com.
Name: www.a.shifen.com
Address: 183.2.172.42
Name: www.a.shifen.com
Address: 183.2.172.185
Name: www.a.shifen.com
Address: 240e:ff:e020:9ae:0:ff:b014:8e8b
Name: www.a.shifen.com
Address: 240e:ff:e020:966:0:ff:b042:f296
[root@ansible-prome bin]# nslookup www.jd.com
Server: 127.0.0.1
Address: 127.0.0.1#53
Non-authoritative answer:
www.jd.com canonical name = www.jd.com.gslb.qianxun.com.
www.jd.com.gslb.qianxun.com canonical name = www.jd.com.s.galileo.jcloud-cdn.com.
www.jd.com.s.galileo.jcloud-cdn.com canonical name = wwwv6.jcloudimg.com.
Name: wwwv6.jcloudimg.com
Address: 175.6.186.3
Name: wwwv6.jcloudimg.com
Address: 240e:c2:1800:14d:8000::3
4、修改配置文件,重启服务器允许其他电脑能过来查询dns域名
[root@nfs-ansible-prom prom]# vim /etc/named.conf
options {
listen-on port 53 { any; }; #修改
listen-on-v6 port 53 { any; }; #修改
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
recursing-file "/var/named/data/named.recursing";
secroots-file "/var/named/data/named.secroots";
allow-query { any; }; #修改
重新启动named服务
[root@nfs-ansible-prom prom]# service named restart
Redirecting to /bin/systemctl restart named.service
[root@nfs-ansible-prom prom]#
[root@ansible-prome bin]# ps aux|grep named
named 3415 0.2 1.5 390036 58076 ? Ssl 15:29 0:00 /usr/sbin/named -u named -c /etcnamed.conf
root 3423 0.0 0.0 112824 980 pts/0 S+ 15:30 0:00 grep --color=auto named
[root@ansible-prome bin]# netstat -anplut|grep named
tcp 0 0 192.168.205.134:53 0.0.0.0:* LISTEN 3415/named
tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 3415/named
tcp 0 0 127.0.0.1:953 0.0.0.0:* LISTEN 3415/named
tcp6 0 0 :::53 :::* LISTEN 3415/named
tcp6 0 0 ::1:953 :::* LISTEN 3415/named
udp 0 0 192.168.205.134:53 0.0.0.0:* 3415/named
udp 0 0 127.0.0.1:53 0.0.0.0:* 3415/named
udp6 0 0 :::53 :::* 3415/named
[root@ansible-prome bin]#
测试,在另外一台客户机上使用dns服务器,进行域名查询测试
[root@lb-1 conf]# vim /etc/resolv.conf
#nameserver 114.114.114.114
#nameserver 222.246.129.80
nameserver 192.168.205.134
[root@lb-1 conf]# yum install bind-utils -y
[root@lb-1 conf]# nslookup www.baidu.com
Server: 192.168.205.134
Address: 192.168.205.134#53
Non-authoritative answer:
www.baidu.com canonical name = www.a.shifen.com.
Name: www.a.shifen.com
Address: 183.2.172.185
Name: www.a.shifen.com
Address: 183.2.172.42
Name: www.a.shifen.com
Address: 240e:ff:e020:966:0:ff:b042:f296
Name: www.a.shifen.com
Address: 240e:ff:e020:9ae:0:ff:b014:8e8b
3、 域名需要去购买–》全球统一管理的组织
请你介绍下dns域名的解析过程:
www.baidu.com 为例来说明
www.a.com
1.客户机向本地dns服务器发起dns请求,要求解析域名www.baidu.com的ip
2.本地的dns服务器会在缓存里查找对应的域名,如果有,里面返回给客户机ip地址,如果没有,就问根域名服务器要www.baidu.com对应的ip
3.根域名服务器会返回com.的ip地址,告诉本地dns服务器,问com.服务器www.baidu.com的ip
4.本地dns服务器向com服务器发起请求,com服务器返回baidu.com域名对应的dns服务器的地址
5.本地dns服务器向baidu.com服务器发起请求,baidu.com 域名服务器返回www.baidu.com域名对应的ip地址
6.本地dns服务器缓存www.baidu.com对应的ip,然后告诉客户机
7.客户机去访问www.baidu.com对应的ip服务器
缓存:
1.浏览器缓存
2.操作系统缓存
3.本地dns服务器里的缓存
TTL: time to live 10分钟
scweb.com --->17000
DNS的记录类型
www 192.168.205.1
A 地址解析记录 address 将域名解析到ip
NS 域名服务器记录 name server 一个域名里有多台专门负责域名解析的服务器的ip
缓存域名服务器 --》路由器
也称为 唯高速缓存服务器
通过向其他域名服务器查询获得域名->IP地址记录
将域名查询结果缓存到本地,提高重复查询时的速度
主域名服务器 --》qq.com 163.com jd.com didi.com --》可以写入的
特定DNS区域的官方服务器,具有唯一性,权威性
负责维护该区域内所有域名->IP地址的映射记录
从域名服务器 --->负责读数据,不能写数据
也称为 辅助域名服务器
其维护的 域名->IP地址记录 来源于主域名服务器
4、搭建一台scweb.com 主域名服务器
1.安装软件 bind bind-utils
可以给自己的web集群项目提供域名解析,我们使用sc.com这个域名
1.修改配置文件,告诉named为sc.com提供域名解析
/etc/name.conf 主配置
/etc/named.rfc1912.zones 次要配置文件
[root@nfs-ansible-prom prom]# vim /etc/named.rfc1912.zones
//添加下面的配置,增加一个sc.com的域名
zone "scweb.com" IN {
type master;
file "scweb.com.zone";
allow-update { none; };
};
3./var/named/ 存放dns域名解析的数据文件sc.com.zone --》创建sc.com的数据文件
[root@nfs-ansible-prom prom]# cd /var/named/
[root@nfs-ansible-prom named]# cp -a named.localhost scweb.com.zone
修改scweb.com.zone文件,添加我们自己的相关服务的A记录和别名记录
[root@nfs-ansible-prom named]# vim scweb.com.zone
$TTL 1D
@ IN SOA ns1.scweb.com. rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS ns1.scweb.com.
A 192.168.205.134
AAAA ::1
www A 192.168.205.188
www A 192.168.205.199
www A 192.168.205.177
nfs A 192.168.203.132
xinjiapo A 8.8.8.9
web CNAME www
luobiao CNAME nfs
* A 192.168.205.18
@ A 192.168.205.199
- 泛域名解析记录
@ 只是本域名记录 例如: scweb.com
检测数据文件
[root@ansible-prome named]# named-checkzone scweb.com scweb.com.zone
zone scweb.com/IN: loaded serial 0
OK
[root@ansible-prome named]#
[root@ansible-prome named]# named-checkconf /etc/named.rfc1912.zones
[root@ansible-prome named]#
[root@nfs-ansible-prom named]#
刷新named服务,让新的配置生效
[root@nfs-ansible-prom named]# service named restart
Redirecting to /bin/systemctl restart named.service
[root@nfs-ansible-prom named]#
[root@ansible-prome named]# ps aux|grep named
named 3531 0.1 1.5 390036 60168 ? Ssl 17:23 0:00 /usr/sbin/named -u named -c /etcnamed.conf
root 3539 0.0 0.0 112824 976 pts/0 S+ 17:23 0:00 grep --color=auto named
[root@ansible-prome named]#
验证我们自己添加的scweb.com区域是否有效?在另外一台客户机上进行测试,需要填写本地的dns服务器ip
[root@lb-1 conf]# cat /etc/resolv.conf
# Generated by NetworkManager
#nameserver 114.114.114.114
#nameserver 222.246.129.80
nameserver 192.168.205.134
[root@lb-1 conf]#
[root@lb-1 conf]# nslookup www.scweb.com
Server: 192.168.205.134
Address: 192.168.205.134#53
Name: www.scweb.com
Address: 192.168.205.199
Name: www.scweb.com
Address: 192.168.205.177
Name: www.scweb.com
Address: 192.168.205.188
[root@lb-1 conf]#
[root@lb-1 conf]# dig NS scweb.com
; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.16 <<>> NS scweb.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 23042
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 2
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;scweb.com. IN NS
;; ANSWER SECTION:
scweb.com. 86400 IN NS ns1.scweb.com.
;; ADDITIONAL SECTION:
ns1.scweb.com. 86400 IN A 192.168.205.188
;; Query time: 0 msec
;; SERVER: 192.168.205.134#53(192.168.205.134)
;; WHEN: 四 7月 18 17:30:32 CST 2024
;; MSG SIZE rcvd: 72
[root@lb-1 conf]# dig +short NS scweb.com
ns1.scweb.com.
[root@lb-1 conf]#
[root@lb-1 conf]# nslookup xinjiapo.scweb.com
Server: 192.168.205.134
Address: 192.168.205.134#53
Name: xinjiapo.scweb.com
Address: 8.8.8.9
[root@lb-1 conf]# ping xinjiapo.scweb.com
PING xinjiapo.scweb.com (8.8.8.9) 56(84) bytes of data.
^C
--- xinjiapo.scweb.com ping statistics ---
2 packets transmitted, 0 received, 100% packet loss, time 1013ms
[root@lb-1 conf]#
[root@lb-1 conf]# nslookup www.baidu.com
Server: 192.168.205.134
Address: 192.168.205.134#53
Non-authoritative answer:
www.baidu.com canonical name = www.a.shifen.com.
Name: www.a.shifen.com
Address: 183.2.172.42
Name: www.a.shifen.com
Address: 183.2.172.185
Name: www.a.shifen.com
Address: 240e:ff:e020:9ae:0:ff:b014:8e8b
Name: www.a.shifen.com
Address: 240e:ff:e020:966:0:ff:b042:f296
[root@lb-1 conf]# nslookup luobiao.scweb.com
Server: 192.168.205.134
Address: 192.168.205.134#53
luobiao.scweb.com canonical name = nfs.scweb.com.
Name: nfs.scweb.com
Address: 192.168.203.132
[root@lb-1 conf]#
[root@lb-1 conf]# nslookup luobiao.scweb.com
Server: 192.168.205.134
Address: 192.168.205.134#53
luobiao.scweb.com canonical name = nfs.scweb.com.
Name: nfs.scweb.com
Address: 192.168.203.132
[root@lb-1 conf]# nslookup zhouqiang.scweb.com
Server: 192.168.205.134
Address: 192.168.205.134#53
Name: zhouqiang.scweb.com
Address: 192.168.205.188
[root@lb-1 conf]# nslookup fanzhonglin.scweb.com
Server: 192.168.205.134
Address: 192.168.205.134#53
Name: fanzhonglin.scweb.com
Address: 192.168.205.188
[root@lb-1 conf]# nslookup scweb.com
Server: 192.168.205.134
Address: 192.168.205.134#53
Name: scweb.com
Address: 192.168.205.199
Name: scweb.com
Address: 192.168.205.134
Name: scweb.com
Address: ::1
问题:
hosts文件里的域名解析优先级比DNS服务器高
能解析出来不能ping通,不关dns服务器的事,是网络的问题或者相关服务器的问题
别名记录的作用,可以将流量导入到其他的地方---》CDN
1、当服务启动不了的时候,如何排错?
1.看日志
2.使用检测工具:
检测配置文件和数据文件
/var/log/messages 日志文件
[root@nameserver data]# tail -f /var/log/messages
检查数据文件是否有错误
[root@nameserver data]# named-checkzone sc.com /var/named/sc.com.zone
zone sc.com/IN: loaded serial 0
OK
[root@nameserver data]#
检查配置文件
[root@nameserver data]# named-checkconf /etc/named.rfc1912.zones
2.dns的记录类型
3.域名解析的过程
11 项目
简历:
项目名称:
web集群
高性能的web集群
基于nginx+keepalived的web高性能的集群项目
基于go语言的web高性能的集群项目
高性能的音乐交流网站
高性能的外卖网站
高性能的******后台系统
项目描述:
模拟企业里的web项目需求,构建一个高可用高性能的web集群系统。采用nginx做负载均衡软件,keepalived实现高可用,搭建内部的一套基于Prometheus+grafana的监控系统,采用nfs实现数据一致性,采用ansible实现自动化运维,后台的web系统采用(nginx/go后台/python后台/java后台等),数据库采用MySQL+redis,通过域名访问,实现https功能。
差异化思路:
1.你的网站的内容和功能,例如:买苹果、买梨子,人事管理、外卖、音乐、电影、二手图书等
2.顺序:
3.增加或者减少内容:
项目环境: 使用的软件及版本
项目周期: 2021年07月 - 2021年09月
项目步骤:
你是如何完成的--》方案:
使用什么技术解决了什么问题
分类:
监控:
存储:
自动化运维:
高可用:
LB
后台:
等
项目心得:
成果: 成绩
摆数据: 服务器的数量、时间、