综合架构后续内容及期末架构开场

综合架构的愿景

  • 综合架构 :
  • 公司网站架构
  • 基础概念掌握
  • 熟悉公司实际应用的服务
  • 排错能力 Linux 提示----> 中文 如何解决
  • 练习面试的时候语言表达能力

错误提示参考此文章------>Linux必备故障及原因50个


期末架构

期末架构的衍生

  • 综合架构 中小型公司 (初创公司)
  • 对架构扩展 来适应目前公司需求

期末架构图

期末架构
设备名称 包含服务 用途 说明
用户浏览器 nginx(expire gzip) 浏览器缓存
网络加速设备 CDN 缓存网站的静态页面
防火墙 iptables,firewalld,安全组(阿里云) 访问控制 限制黑名单和白名单
负载均衡 lvs,nginx,haproxy lvs支持更高的并发(几万到几十万) nginx是四层和七层,lvs四层
缓存 nginx,varnish 缓存静态资源
网站 lnmp 实现动静分离
缓存 redis 缓存数据库的缓存,保持会话共享 数据库为整个架构中的短板
数据库 mysql,mongodb 数据库高可用,数据库主从 网站文字信息,文章内容,订单信息
存储 nfs,samba, 用户上传的数据 用户数据,数据库,配置文件,脚本网站代码
备份服务器 rsync,硬件 用户数据,数据库,配置文件,脚本网站代码 通常进行实时备份

补充:代码上线的过程

图片.png

面试的相关事项((只要有面试 就要有 总结)

    1. 投递简历 (简历 公开 HR可以看到)
    1. HR看到建立进行回访
      1. 简单电话面试(技术)
    1. 到达公司
      1. 面试信息表
      1. 笔试题(纸笔)
      1. 面试
          1. 同事
          1. 技术(领导)
          1. CEO/总裁
          1. HR面试(谈钱)
          1. 对方发送offer (录用通知书)
          1. 准备入职材料
    1. 总结: 只要有面试 就要有总结
      1. 面试问题
      1. 你的回答

面试的具体内容

笔试题(基础 )

    1. 基础部分的内容 基础操作 命令
    1. 三剑客 与 正则
    1. 网络 1. osi7层 2. tcp/ip 三次握手 四次挥手 3. 抓包:wireshark tcpdump
    1. 添加路由规则
    1. 防火墙规则 iptables
    1. 服务配置 故障排错
    1. Shell编程
    1. 数据库: SQL 各种查找 select /show
    1. 排错 遇到的故障及排错思路
    1. 未来发展 1年 5年 10年

面试(经验 框架 排错 优化)
考察

    1. 遇到什么故障
    1. 优化 监控
    1. 架构(期末架构) 网站架构是什么?
    1. 说出来 画出来

优化体系

系统优化
服务优化(nginx php tomcat)
安全优化

基础必备优化:

    1. 关闭SElinux (NSA--->美国安全局)
    1. Firewalld CenetOS7 Iptables (C6) 安全组(阿里云)
      1. 内网环境 不对外访问 可以关闭
      1. 公网 需要开启 老男孩教育-Linux

NetworkManager network
相同地方 管理网络 管理网络 区别 通过nmcli命令 修改配置文件 重启网卡生效

  1. 网络管理服务
NetworkManager network
相同地方 管理网络 管理网络
区别 通过nmcli命令 修改配置文件 重启网卡
    1. 添加普通用户 配置sudo 预防 root密码忘记
      通过xshell导出 主机信息和密码
    1. /etc/hosts文件 解析当前的主机名
      解析主机名 DNS 后面的服务软件 可能安装失败
    1. 锁定关键文件系统 chattr lsattr 命令 文件
    1. 系统字符集:UTF-8
#en_US.UTF8
#zh_CN.UTF8
    1. 调整用户登录提示信息 /etc/motd
    1. 清空 /etc/issue /etc/issue.net 基础服务优化

二.基础服务优化:

  • 10.ssh优化 :

Port 22 #修改默认的端口号
PermitRootLogin no #禁止root远程登陆

ssh远程连接慢

UseDNS no #禁止系统把ip解析对应域名
GSSAPIAuthentication no

配置内外网监听不同端口
ListenAddress 10.0.0.7:52113
ListenAddress 172.16.1.7:22

  • 11.yum源: 修改系统默认的yum源 增加epel源

  • 12 软件包默认的源+epel

必须安装的工具 tree vim wget bash-completion (默认源) bash-completion-extras(epel) lrzsz net-tools sysstat iotop iftop htop unzip nc nmap telnet bc psmisc

命令 作用
tree 以树形显示目录结构
psmisc pstree 等命令
vim vi升级版
wget 下载工具
bash-completion(默认源) 自动补全增强工具,可以补全命令参数
bash-completion-extras(epel) 自动补全超级增强工具,可以补全命令参数
lrzsz 上传下载工具 rz和sz
net-tools ifconfig route命令属于的软件包
sysstat sar iostat 属于的软件包
iotop 查询系统每个进程的io读写情况 swap写入情况
iftop 查询网络流量情况
nethogs 显示每个进程的流量情况
htop top升级版
unzip 解压
nc ncat 类似telnet
nmap 网络扫描工具
telnet 检查端口是否开启
bc 基础计算器
lsof 显示所有被打开的文件
  • 13.时间同步:定时任务+ ntpdate / chrony

  • 14.文件描述符 每个进程可以打开的最大文件数量

1)临时 ulimit -n65535 
2)永久 /etc/security/limits.conf
echo '* - nofile 65535 ' >>/etc/security/limits.conf
  • 15.开机自启动crond sysstat network rsyslog sshd

  • 16.修改历史命令环境变量

export TMOUT=300 #timeout linux不进行任何操作 300s之后自动登出
export HISTFILE=1000 history 命令最多记录几条
export HISTFILESIZE=1000 history 历史记录的文件里面最多记录几条
export HISTCONTROL=ignorespace #控制history 命令如何记录 历史命令
只要以空格开头的命令 history不记录

三.内核优化:

前言:tracert 追踪路由的路径


追踪路由

中间的可以忽略,只关注开头和结尾。中间丢包因为途中经过国家骨干网,ping被禁止。

  • 17.禁止被ping
  echo "net.ipv4.icmp_echo_ignore_all=1" >> /etc/sysctl.conf 
  sysctl -p 

注:为0时表示开启ping功能。

[root@web01 ~]# ip a 
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: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:82:a5:bb brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.7/24 brd 10.0.0.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe82:a5bb/64 scope link 
       valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:82:a5:c5 brd ff:ff:ff:ff:ff:ff
    inet 172.16.1.7/24 brd 172.16.1.255 scope global eth1
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe82:a5c5/64 scope link 
       valid_lft forever preferred_lft forever

[root@web01 ~]# echo '  net.ipv4.icmp_echo_ignore_all=1' >> /etc/sysctl.conf  
[root@web01 ~]# sysctl -p  #使刚才配置的生效。
net.ipv4.icmp_echo_ignore_all = 1
[root@web01 ~]# cat /proc/sys/net/ipv4/icmp_echo_ignore_all 
1   

也可以echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
注意:使用此方法低于vi /etc/sysctl.conf的优先级,即使使用"echo 1 > (一定要加空格,否则会被认为输出重定向。)/proc/sys/net/ipv4/icmp_echo_ignore_all"的方法sysctl -p 会重新加载/etc/sysctl.conf文件下修改的内容,且echo 1到内存的方法是临时的。

[root@web01 ~]# ping 10.0.0.7
PING 10.0.0.7 (10.0.0.7) 56(84) bytes of data.
^C
--- 10.0.0.7 ping statistics ---
6 packets transmitted, 0 received, 100% packet loss, time 5000ms

[root@web01 ~]# ping 172.16.1.7
PING 172.16.1.7 (172.16.1.7) 56(84) bytes of data.
^C
--- 172.16.1.7 ping statistics ---
2 packets transmitted, 0 received, 100% packet loss, time 999ms

  • 18.内核

开启内核转发功能(内网服务器,上外网的时候需要用到)

echo 'net.ipv4.ip_forward=1 ' >>/etc/sysctl.conf 
sysctl -p
/proc/sys/net/ipv4/ip_forward 
    1. time_wait过多

tcp的四次挥手time_wait等待断开连接的数量过多,需要将此优化。
显示tcp的各种状态--->ss -ant(netstat -tlunp)
java程序比较常见

 echo 'net.ipv4.tcp_tw_recycle=1 ' >>/etc/sysctl.conf 
 echo 'net.ipv4.tcp_tw_reuse=1 ' >>/etc/sysctl.conf 

/proc/sys/net/ipv4/tcp_tw_recycle #开启tcp回收功能
/proc/sys/net/ipv4/tcp_tw_reuse #开启tcp重复使用功能

    1. java程序 故障 导致大量占用swap 而不占用物理内存
echo 'vm.swappiness=10 ' >>/etc/sysctl.conf    

控制系统是否优先使用swap 数字越大越优先使用swap 越小越优先使用物理内存。

四、服务优化

  • nginx
  • php
  • mysql
  • tomcat

nginx优化

  • 1.nginx源码包下载地址


    image

点击download有不同的下载版本,版本为数值为奇数时时测试版,为偶数时为稳定版本。。

image

  • 2.编译安装nginx步骤
编译安装nginx 
./configure   生成配置文件 用于下一步的编译  
 make          编译代码--->命令或文件
 make install  编译生成的命令或文件 复制到 指定目录(-prefix) 

注意:如果不指定安装目录则默认安装到/usr/local下

编译安装的详细步骤

tar zcf  /backup/nginx-conf.bak   /etc/nginx/  #先进行备份
[root@web01 /html/blog]# rpm -e nginx 
error: Failed dependencies:    nginx is needed by (installed) nginx-mod-httpxslt-filter-1:1.12.2-3.el7.x86_64    
nginx is needed by (installed) nginx-mod-httpperl-1:1.12.2-3.el7.x86_64   
nginx is needed by (installed) nginx-mod-mail1:1.12.2-3.el7.x86_64    
nginx is needed by (installed) nginx-mod-stream1:1.12.2-3.el7.x86_64    
nginx is needed by (installed) nginx-mod-httpgeoip-1:1.12.2-3.el7.x86_64    
nginx is needed by (installed) nginx-mod-httpimage-filter-1:1.12.2-3.el7.x86_64 
[root@web01 /html/blog]# rpm -e nginx --nodeps #卸载时将相关依赖也卸载掉。
warning: /etc/nginx/nginx.conf saved as /etc/nginx/nginx.conf.rpmsave warning: file /etc/nginx/conf.d/default.conf: remove failed: No such file or directory

注意:尽量不要用yum remove nginx,可能将软件依赖其他的软件也同样给卸载掉。

开始进行编译安装

wget -P /app/tools   http://nginx.org/download/nginx-1.16.1.tar.gz #将源码包指定到/app/tools中,-P如果没有这个目录,则进行创建。
cd /app/tools #进入目录
tar xf nginx-1.16.1.tar.gz 解压源码包
cd nginx-1.16.1/ #进入解压目录
[root@zabbix nginx-1.16.1]# ll 
total 748
drwxr-xr-x 6 www www    326 Aug 27 17:18 auto
-rw-r--r-- 1 www www 296463 Aug 13 20:51 CHANGES
-rw-r--r-- 1 www www 452171 Aug 13 20:51 CHANGES.ru
drwxr-xr-x 2 www www    168 Aug 27 17:18 conf
-rwxr-xr-x 1 www www   2502 Aug 13 20:51 configure #脚本文件
drwxr-xr-x 4 www www     72 Aug 27 17:18 contrib
drwxr-xr-x 2 www www     40 Aug 27 17:18 html
-rw-r--r-- 1 www www   1397 Aug 13 20:51 LICENSE
drwxr-xr-x 2 www www     21 Aug 27 17:18 man
-rw-r--r-- 1 www www     49 Aug 13 20:51 README
drwxr-xr-x 9 www www     91 Aug 27 17:18 src
  • 3.configure编译之前修改响应头
nginx-xxx/src/core/nginx.h 
nginx-xxx/src/http/ngx_http_header_filter_module.c 
nginx-xxx/src/http/ngx_http_special_response.c
把nginx 响应头的信息 nginx---->old-guang 
#C语言编写,#号不是注释。
  • 操作步骤:
    1.第一个历程修改解压后的配置文件
root@web01 /app/tools/nginx-1.16.1]# grep -n old- src/core/nginx.h 
14:#define NGINX_VER          "old-guang/" NGINX_VERSION
22:#define NGINX_VAR          "old-guang"
[root@web01 /app/tools/nginx-1.16.1]# grep -n old-guang src/http/ngx_http_header_filter_module.c
49:static u_char ngx_http_server_string[] = "Server: old-guang" CRLF;
[root@web01 /app/tools/nginx-1.16.1]# grep -n old-guang  src/http/ngx_http_special_response.c
36:"<hr><center>old-guang</center>" CRLF
  • 2.开始编译安装
 ./configure --prefix=/app/nginx-1.16.1  --user=nginx --group=nginx --with-http_ssl_module  --with-http_stub_status_module

编译安装说明

./configure #--prefix=/app/nginx-1.16.1 指定按照路径 替你创建 >--user=nginx --group=nginx 服务运行用户
--with-http_ssl_module https
--with-http_stub_status_module stub_status 状态模块

  • .configure 故障
 /configure: error: SSL modules require the OpenSSL library. 
You can either do not enable the modules, or install the OpenSSL library into the system, 
or build the OpenSSL library statically from the source with nginx by using --with-openssl=<path> option

会出现没有相关依赖包的错误,需要安装相关依赖包。

  • 3.安装相关依赖包
yum install openssl-devel pcre-devel -y(pcre 语言兼容的正则表达式)
  • 4.将源码包变为二进制形式,使计算机可读。
make  && make install
>如何知道上一步的编译安装是否成功,使用echo $?,如果$?=0则表示上一部执行成功,否则都运行失败。
  • 5.安装完毕
 ln -s /app/nginx1.16.1/  /app/nginx  #生成软链接
[root@web01 /app/nginx-1.16.1]# ll  /app/nginx/ #避免使用nginx目录过长,生成一个软链接。 
total 0 
drwxr-xr-x 2 root root 333 Aug 27 11:03 conf #配置文件
drwxr-xr-x 2 root root  40 Aug 27 11:03 html 
drwxr-xr-x 2 root root   6 Aug 27 11:03 logs 
drwxr-xr-x 2 root root  36 Aug 27 11:28 sbin #命令
  • 6.启动nginx
[root@web01 /app/nginx-1.16.1]# /app/nginx/sbin/nginx 
[root@web01 /app/nginx-1.16.1]# lsof -i:80 
COMMAND   PID  USER   FD   TYPE DEVICE SIZE/OFF NODE NAME nginx   15978  root    6u  IPv4  78226      0t0  TCP *:http (LISTEN) nginx   15979 nginx    6u  IPv4  78226      0t0  TCP *:http (LISTEN)
  • 7.验证响应头部
[root@web01 /app/nginx-1.16.1]# curl -I 10.0.0.7
HTTP/1.1 200 OK Server: old-guang/1.16.1 
Date: Tue, 27 Aug 2019 03:49:49 GMT 
Content-Type: text/html 
Content-Length: 612 
Last-Modified: Tue, 27 Aug 2019 03:03:32 GMT Connection: keep-alive 
ETag: "5d649d84-264" Accept-Ranges: bytes

如何将http响应报文中的版本信息隐藏

user www www; 将worker进程的用户变为www
worker_processes  4;#和cpu核心数一致
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    server_tokens off; #配置此命令,但是无法将版本修改为其他的字符串,nginx商业版支持。
    keepalive_timeout  65;
    server {
        listen       80;
        server_name  localhost;
        location / {
            root   html;
            index  index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;

nginx -s reload 重新加载配置文件

[root@zabbix conf]# ps -ef |grep nginx 
root       7686      1  0 20:16 ?        00:00:00 nginx: master process nginx
www        7687   7686  0 20:16 ?        00:00:00 nginx: worker process
www        7688   7686  0 20:16 ?        00:00:00 nginx: worker process
www        7689   7686  0 20:16 ?        00:00:00 nginx: worker process
www        7690   7686  0 20:16 ?        00:00:00 nginx: worker process

让服务器cpu均衡nginx的服务

image
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,242评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,769评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,484评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,133评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,007评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,080评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,496评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,190评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,464评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,549评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,330评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,205评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,567评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,889评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,160评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,475评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,650评论 2 335

推荐阅读更多精彩内容

  • feisky云计算、虚拟化与Linux技术笔记posts - 1014, comments - 298, trac...
    不排版阅读 3,792评论 0 5
  • Day31 作者:孙鹏鹏 归档:课后笔记 时间:2019/4/12 快捷键: Ctrl + 1 标题1 Ctrl ...
    孙鹏鹏廊坊阅读 245评论 0 0
  • 昨天听詹宏志老师讲自己与书结缘的一个过程,我也就回想了自己成长的过程中与书的一段段往事。 小时候的自己...
    小东记事阅读 280评论 2 2
  • 生活中处处都有典故,很多我们早已习以为常的日常生活用品的背后也有着耐人寻味的故事。你知道伞是如何发明的吗?你清楚牙...
    無湦阅读 354评论 0 0
  • 【每日精进打卡第358天】 姓名:张晓雪 公司:淮安市金鸡喜满堂食品有限公司 349期六项精进(南京)乐观二组学员...
    我怕我忘记你_6e63阅读 107评论 0 1