架构开篇

架构开篇
[TOC]
单点故障

❤️==并发== :多个用户同时访问
使用单点服务器的网站
- 不是特别重要
- 对外宣传,不存在交易
- 监控
👑单台服务器我们统称为==单点故障==
只要里面有一个地方坏,整台服务器都用不了
承载的用户是有限的
配置和资源是有限的
网络慢
初见架构
大家先有一个整体的框架,后面我们会详细学习每一块的内容。

- web02也可以访问到数据库和缓存
❤️为什么要做集群?
- 单点故障
- 高并发


准备工作
这个是模板机,用于后面克隆使用
1.安装操作系统kylin(企业版)
安装过程1)一个CPU一个核心,2)1G内存,50G硬盘3)分区标准分区(速度快)/bootswap(自己虚拟机分、企业不分)
修改网卡名字

输入net.ifnames=0 biosdevname=0后,回车进入系统。


分区



- 这里200m其实就是200MiB

- 根分区下面那一行不用写

- 出现弹窗,接受更改(A)
软件选择
最小化安装1.标准2.调试工具3.开发工具4.系统工具5.Man手册网络和主机




- 设置密码
- 不用创建用户

2.系统优化
增加局域网-网卡
NAT

使用VMnet8网卡
.1和宿主机通信 .2网关,用来访问外网
私网中的 虚拟机 可以通过NAT访问与 宿主机 在同一网段的 其他物理机
但同一网段的 其他物理机 无法访问我私网的 虚拟机
网桥

默认使用VMnet0网卡
虚拟机和宿主机在同一个网段下
🌉 这就像给虚拟机插了一根“看不见的网线”,直接连到了你家/公司的交换机上
厉害就厉害在,同一网段的 其他物理机 可以访问我私网的 虚拟机
仅主机

- 默认使用VMnet1网卡
- 可以和宿主机直接ping通
- 虚拟机无法访问网络
LAN网段

创建虚拟局域网(类似物理交换机VLAN)
通信范围:
- 同一LAN区段内的虚拟机互相通信
- 与宿主机、别的LAN区段、外部网络==完全隔离==
像这个LAN区段可以是很多,同样对应的局域网可以是很多个
选择同一个LAN区段,相当于把虚拟机接在同一个交换机上了

10.0.0.0/24用于访问外网 第一张网卡
172.16.1.0/24用于模仿我们的局域网 第二张网卡
流程

这个区段的名字,只是方便我们记忆认知,这个名字本质上写什么都行
你要是想要他们属于一个局域网,那么他们的LAN区段的名字是必须要一样的
也就是所有机器的第二张网卡,都得是它。
有了它我们就可以创建多重局域网
这个LAN区段只需要添加一次,则所有虚拟机都可以识别并使用

- 重新启动虚拟机
网卡优化
[root@oldboy ~]# ip a3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 00:0c:29:61:64:54 brd ff:ff:ff:ff:ff:ff# 重启后多了一张网卡,名为eth1
1.优化网卡配置[root@oldboy ~]# cd /etc/sysconfig/network-scripts/[root@oldboy network-scripts]# ll总用量 4-rw-r--r-- 1 root root 352 1月 10 16:35 ifcfg-eth0[root@oldboy network-scripts]# cat ifcfg-eth0TYPE=EthernetBOOTPROTO=noneNAME=eth0DEVICE=eth0ONBOOT=yesIPADDR=10.0.0.3PREFIX=24GATEWAY=10.0.0.2DNS1=223.5.5.5
2.复制配置文件为eth1[root@oldboy network-scripts]# cp ifcfg-eth0 ifcfg-eth1[root@oldboy network-scripts]# cat ifcfg-eth1TYPE=EthernetBOOTPROTO=noneNAME=eth1DEVICE=eth1ONBOOT=yesIPADDR=172.16.1.3PREFIX=24# 这里不需要配置网关和DNS# 因为这张网卡是局域网专用,不负责访问外网
3.重启生效[root@oldboy ~]# systemctl restart networkFailed to restart network.service: Unit network.service not found.[root@oldboy ~]# yum -y install network-scripts[root@oldboy ~]# systemctl restart network# 再次通过ip addr查看结果,已经全部改正过来。
4.是否联网[root@oldboy ~]# ping -c1 -W1 www.baidu.comPING www.a.shifen.com (110.242.69.21) 56(84) bytes of data.64 bytes from 110.242.69.21 (110.242.69.21): icmp_seq=1 ttl=128 time=12.4 ms其他优化
2)配置扩展epel仓库curl -o /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo# 麒麟默认yum仓库在国内,不需要进行修改# Centos7需要进行修改yum仓库和epel仓库
3)安装常用命令、软件[root@oldboy ~]# yum -y install lrzsz ntpdate#其他的软件和命令"vim tree wget bash-completion bash-completion-extras lrzsz net-tools sysstat iotop iftop htop unzip nc nmap telnet bc psmisc httpd-tools bind-utils nethogs expect cowsay sl ntpdate"
4)时间同步1.先查看自己的时区,如果时区不对记得修改[root@oldboy ~]# timedatectl status[root@oldboy ~]timedatectl set-timezone Asia/Shanghai2.写入定时任务里面[root@oldboy ~]# tail -1 /etc/crontab*/15 * * * * root ntpdate ntp1.aliyun.com &>/dev/null# 这里是系统的定时任务,命令前面要加root
5)默认语言修改英语[root@oldboy ~]# echo ${LANG}zh_CN.UTF-8[root@oldboy ~]# localectl set-locale LANG=en_US.UTF-8[root@oldboy ~]# source /etc/locale.conf[root@oldboy ~]## 测试提示结果为英语[root@oldboy ~]# lll-bash: lll: command not found
6)PS1变量[root@oldboy ~]# tail -2 /etc/profile# 用来自定义命令行格式样式PS1="[\[\e[34;1m\]\u@\[\e[0m\]\[\e[32;1m\]\H\[\e[0m\]\[\e[31;1m\] \W\[\e[0m\]]\\$ "# 别忘了souce一下环境变量
7)关闭防火墙[root@oldboy ~]#systemctl stop firewalld[root@oldboy ~]#systemctl disable firewalld# Centos记得修改/etc/selinux/config文件,关闭SElinux
8)kylin卸载tmp# kylin的tmp目录属于内存空间(企业需要卸载优化)[root@oldboy ~]#umount /tmp[root@oldboy ~]#systemctl mask tmp.mount#禁止开机自动挂载
9)ssh优化[root@oldboy ~]sed -i '/^GSSAPIAuthentication/s@^@#@g' /etc/ssh/sshd_config# 原来是 yes 注释掉 --> 开头换为#[root@oldboy ~]cat >>/etc/ssh/sshd_config<<EOFUseDNS no# 相当于网络命令的-n选项,这个就是说不解析为主机名,直接成IP地址.GSSAPIAuthentication no# 关闭GSS认证.EOF[root@oldboy ~]#grep GSSAPIAuthentication /etc/ssh/sshd_config#GSSAPIAuthentication yesGSSAPIAuthentication no'我们注释的是yes --> 追加的是 no'[root@oldboy ~]systemctl restart sshd[root@oldboy ~]egrep '^(GSSAPIAuthentication|UseDNS)' /etc/ssh/sshd_configUseDNS noGSSAPIAuthentication no# 检查# 注: sshd_config后面讲解sshd服务会有详解,目前配置即可
10)登录提示信息优化[root@oldboy ~]# cat /etc/issue
Authorized users only. All activities may be monitored and reported.[root@oldboy ~]# cat /etc/issue.net
Authorized users only. All activities may be monitored and reported.# 把它们都注释掉!![root@oldboy ~]# > /etc/issue[root@oldboy ~]# > /etc/issue.net文件描述符
文件描述符(FD) 是一个整数编号,是操作系统用来”记住”你打开了哪个文件或网络连接的”小标签”
- 每个 FD 对应一种资源:普通文件、Socket 连接、管道、设备文件等
- 默认单个进程最多同时打开 1024 个 FD
- 业务量上来后(比如高并发服务),1024 明显不够用,所以要调大到 65535
有一个下载器软件(这是一个进程),任务是同时下载 100 个文件
进程启动(打开大门)
- 你双击运行下载器。操作系统给你分配了一个进程 ID
- 此时,你手里默认有 3 个 FD:
FD 0:键盘(标准输入)
FD 1:屏幕(标准输出)
FD 2:报错屏幕(标准错误)
打开多个连接(消耗 FD)
- 你开始下载第 1 个文件 → 系统给你分配 FD 3(对应连接 A)
- 你开始下载第 2 个文件 → 系统给你分配 FD 4(对应连接 B)
- …
- 你开始下载第 100 个文件 → 系统给你分配 FD 102(对应连接 N)
现在的状态: 1 个进程(下载器),手里拿着 100 多个 FD(全是网络连接)
遇到瓶颈(1024 限制)
如果你是个超级下载器,想同时下载 2000 个文件
当你试图建立第 1025 个连接时,操作系统会拦下你:
“停!你的 FD 额度(1024)用光了!不能再开新连接了!” (
Too many open files)
关闭窗口(释放 FD)
- 第 1 个文件下载完了,你关闭了连接 A
- 操作系统回收 FD 3
- FD 3 这个数字空出来了,下次你再开新连接时,系统会把这个号重新发给你
#加大文件描述符#查看默认描述符数量[root@oldboy ~]#ulimit -n1024#设置文件描述符为65535[root@oldboy ~]#echo "* - nofile 65535" >> /etc/security/limits.conf[root@oldboy ~]#tail -1 /etc/security/limits.conf* - nofile 65535#重启系统生效reboot#检查结果[root@oldboy ~]#ulimit -n65535娱乐时间
/etc/motd
- 存放字符串,每次Xshell连接显示里面的内容
[root@oldboy ~]#cat /etc/motd |\ /| ___| \,,/_/ ---__/ \/ \ __--/ (D) \ _ -/ (_ \ // / \_ / -\ __-------_____--___--/ / \_ O o) / / \__/ / /|| ) \_/\|| / _ / || | /--______ ___\ /\ :| / __- - _/ ------ | | \ \ | - - / | | \ ) | | - | | ) | | | | | | | | | | | | < | | | |_/ < | /__\ < \ /__\ /___\^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 奔腾如骏 稳如磐石 系统常青 永不死机脚本优化
🏆用于更加便捷的修改主机名和IP地址
mkdir -p /server/scripts/# 以后我们的脚本文件都放在/server/scripts目录下面vim /server/scripts/change.sh# 然后把脚本粘贴进来。#!/bin/bash#author: jiuzhao996#desc: change ip and hostname#version: v1.0
[ $# -ne 2 ] && { echo "Usage: $0 <hostname> <new_ip>" echo "Example: $0 web01 192.168.1.200" exit 1}
# 获取IP地址的最后一段# 例如192.168.1.200获取200,因为两个网卡都要进行修改ip=$(hostname -I | awk '{print $1}' | awk -F. '{print $NF}')# $NF最后一列# -F. 以.为分隔符new_ip=$(echo $2 | awk -F. '{print $NF}')# $2是我们刚才输入进去的IP地址
# 新主机名new_hostname=$1
# 修改IP(假设使用ifcfg-eth0)sed -i "s#10.0.0.$ip#10.0.0.$new_ip#g" /etc/sysconfig/network-scripts/ifcfg-eth0sed -i "s#172.16.1.$ip#172.16.1.$new_ip#g" /etc/sysconfig/network-scripts/ifcfg-eth1
# 修改主机名hostnamectl set-hostname $new_hostname
# 重启网络systemctl restart network
echo "hostname changed to $new_hostname,IP changed to $2, "3.快照—>关机

4.克隆服务器
链接克隆

占有的空间更少一些
克隆出来的机器,不完全独立,依赖模板机
每链接克隆一台机器,模板机就会有一个相应的快照 带锁的快照,这个==快照不能删==
快速克隆
backup 10.0.0.41# 备份服务器
nfs 10.0.0.31# 存储服务器- 修改主机名和IP地址

sh /server/scripts/change.sh 主机名 IP地址# 顺序一定不能反- 分别做快照

- 优化xshell会话

- 缓冲区越大,你的终端能塞下的历史记录也多

- 进去终端后,数字小键盘可以随意使用

- 显示完整的终端标题,不缩减

❤️优化完模版机的终端,后面直接复制过去

先苦后甜

-
提前部署,把后面一个月,用到的虚拟机创建出来 改主机名和IP
拍了快照
并通过复制模板机的Xshell会话,创建了他们的会话

文章分享
如果这篇文章对你有帮助,欢迎分享给更多人!



