百万用户量的系统架构

目录
联通三期软件部署过程 1
1.准备工作 3
2.安装软件 4
(1)安装redis集群 4
(2)安装zookeeper 8
(3)安装 ActiveMQ 11
(4)安装 nginx 15
(5)安装nfs 22
(6)物理机磁盘管理 26
(7)安装mongodb服务器 29
(9)安装mysql服务器 39
(10) 安装web服务器 48
(11)安装转码服务器 50

1.准备工作
先创建parim用户
命令:
切换到depoyer用户
deployer账号拥有root权限
密码:De@2016er
su deployer
sudo adduser parim
添加密码:
sudo passwd parim
parim密码:
mine1058!firemen

2.安装软件
(1)安装redis集群
 机器分配
10.162.27.141
10.162.27.142
10.162.27.143
 拷贝文件到parim文件夹
scp -r ./software/ [email protected]:/home/parim/
scp -r ./software/ [email protected]:/home/parim/
scp -r ./software/ [email protected]:/home/parim/
按照文档安装
 解压
tar xzvf redis-3.2.11.tar.gz
 编译
cd redis-3.2.11
make
 安装
cd /home/parim
mkdir -p apps/redis/bin
mkdir -p apps/redis/data
mkdir -p apps/redis/conf
 拷贝程序到相应目录
cp -vf /home/parim/software/redis-3.2.11/src/redis-server ~/apps/redis/bin
cp -vf /home/parim/software/redis-3.2.11/src/redis-cli ~/apps/redis/bin
 配置master服务器
在141上新建master的配置文件
cd /home/parim/apps/redis/conf
vi redis.conf
拷贝master的配置,并保存
启动master
/home/parim/apps/redis/conf/redis.conf

 配置slave服务器
在142,143上新建slave的配置文件
cd /home/parim/apps/redis/conf
vi redis.conf
拷贝slave的配置,并保存
 启动
/home/parim/apps/redis/bin/redis-server /home/parim/apps/redis/conf/redis.conf

 配置开机启动
mkdir ~/bin
parim 用户执行:
cat >> ~/bin/sys_init_startup.sh << EOF
/home/parim/apps/redis/bin/redis-server /home/parim/apps/redis/conf/redis.conf
EOF
chmod 750 ~/bin/sys_init_startup.sh
以 root 用户登录,编辑 /etc/rc.local 文件,添加如下行:
su - parim -c “/home/parim/bin/sys_init_startup.sh”
 关闭防火墙
sudo systemctl stop firewalld.service
sudo systemctl disable firewalld.service
 测试集群
登录master机器
/home/parim/apps/redis/bin/redis-cli -c -p 6380 -a cacheManager1
set name chenpy
get name
登录slave机器
/home/parim/apps/redis/bin/redis-cli -c -p 6380 -a cacheManager1
get name
发现内容已经同步过来
redis端口改为了6380

(2)安装zookeeper
同样新建用户parim
 机器分配
10.162.27.144
10.162.27.145
10.162.27.146
 拷贝安装包
把安装包拷贝到 144的 software文件夹
拷贝完成后用scp 分别拷贝到3台机器的 /home/parim/software 中
scp -r ./software/ [email protected]:/home/parim/
scp -r ./software/ [email protected]:/home/parim/
scp -r ./software/ [email protected]:/home/parim/
 安装zookeeper
创建目录 apps
cd /home/parim/
mkdir -p apps
cd apps
tar xzvf /home/parim/software/zookeeper-3.4.11.tar.gz
cd zookeeper-3.4.11
 修改 ZooKeeper 配置文件
cp -vf conf/zoo_sample.cfg conf/zoo.cfg
mkdir -p logs
mkdir -p data
 替换文本
sed -i ‘s#dataDir=/tmp/zookeeper#dataDir=/home/parim/apps/zookeeper-3.4.11/data#g’ conf/zoo.cfg

 配置文件中添加配置
cat >> conf/zoo.cfg << EOF
dataLogDir=/home/parim/apps/zookeeper-3.4.11/logs

three servers of this cluster

server.1=10.162.27.144:2888:3888
server.2=10.162.27.145:2888:3888
server.3=10.162.27.146:2888:3888
EOF
 添加服务的id
在 10.162.27.144 服务器上执行
touch data/myid
echo 1 > data/myid
在 10.162.27.145 服务器上执行
touch data/myid
echo 2 > data/myid
在 10.162.27.146 服务器上执行
touch data/myid
echo 3 > data/myid
 关闭防火墙
sudo systemctl stop firewalld.service
sudo systemctl disable firewalld.service
 启动服务器
/home/parim/apps/zookeeper-3.4.11/bin/zkServer.sh start
 配置自动启动
cat >> ~/bin/sys_init_startup.sh << EOF
/home/parim/apps/zookeeper-3.4.11//bin/zkServer.sh start
EOF
 添加执行权限
chmod 750 ~/bin/sys_init_startup.sh
以 root 用户登录,编辑 /etc/rc.local 文件,添加如下行:
su - parim -c “/home/parim/bin/sys_init_startup.sh”

(3)安装 ActiveMQ
同样新建用户parim
 机器分配:
10.162.27.147
10.162.27.148
10.162.27.149
 把安装包拷贝到 147的 software文件夹
拷贝完成后用scp 分别拷贝到3台机器的 /home/parim/software 中
scp -r ./software/ [email protected]:/home/parim/
scp -r ./software/ [email protected]:/home/parim/
scp -r ./software/ [email protected]:/home/parim/
 安装mq
解压安装 ActiveMQ
以parim用户登录执行:
cd ~/apps
tar xzvf /home/parim/software/apache-activemq-5.15.2-bin.tar.gz
 编辑 ActiveMQ 配置文件
cd ~/apps/apache-activemq-5.15.2
vim conf/activemq.xml




修改为

mongod.conf

for documentation of all options, see:

http://docs.mongodb.org/manual/reference/configuration-options/

Where and how to store data.

storage:
dbPath: /data/apps/mongodb/data
journal:
enabled: true

engine:

mmapv1:

wiredTiger:

where to write logging data.

systemLog:
destination: file
logAppend: true
path: /data/apps/mongodb/logs/mongo.log

network interfaces

net:
port: 30001
bindIp: 0.0.0.0

how the process runs

processManagement:
fork: true
pidFilePath: /data/apps/mongodb/data/mongod.pid
# timeZoneInfo: /usr/share/zoneinfo

security:
authorization: enabled
keyFile: /data/apps/mongodb/conf/.keyFile

operationProfiling:

replication:
oplogSizeMB: 20480
replSetName: unicom3
# secondaryIndexPrefetch:
# enableMajorityReadConcern:

sharding:

Enterprise-Only Options:

auditLog:

snmp:

EOF

 关闭防火墙
为了方便起见关闭防火墙
sudo systemctl stop firewalld.service
sudo systemctl disable firewalld.service
 生成、拷贝keyFile
在其中一台服务器上执行如下命令,生成keyFile:
openssl rand -base64 102 > M O N G O D B H O M E / c o n f / . k e y F i l e c h m o d 600 MONGODB_HOME/conf/.keyFile
将刚生成的keyFile复制到其他服务器的对应目录。
scp M O N G O D B H O M E / c o n f / . k e y F i l e p a r i m @ 10.162.144.71 : / d a t a / a p p s / m o n g o d b / c o n f / . k e y F i l e s c p MONGODB_HOME/conf/.keyFile [email protected]:/data/apps/mongodb/conf/.keyFile

注意:
执行复制前请缺保其他服务已完成安装及配置文件的修改。
请替换 {other_server_ip} 和 {$MONGODB_HOME} 为对应服务器的 ip 地址和 mongodb 的安装目录。
 启动服务器
/data/apps/mongodb/bin/mongod –config /data/apps/mongodb/conf/mongod.conf
暂时命令代码:start (直接可以忽略下面2行代码)
sudo setcap cap_net_bind_service=+ep /home/parim/apps/nginx/sbin/nginx
sudo setcap cap_fowner+ep /data/apps/mongodb/bin/mongod
暂存结束:end
 初始化复制集
mongodb启动后,在其中一台服务器上,使用如下命令登录mongodb:
mongo –port 30001
》use admin
 第先初始化数据集
//unicom3 是数据集的名字
config={
“_id” : “unicom3”,
“members” : [
{
“_id” : 0,
“host” : “10.162.144.70:30001”
}
]
}

rs.initiate(config)
 创建root用户
use admin
db.createUser(
{
user: “root”,
pwd: “Parim1058!”,
roles: [ { role: “__system”, db: “admin” } ]
}
)
 登录数据库
db.auth(‘root’,’Parim1058!’);
rs.add(“10.162.144.71:30001”);
rs.add(“10.162.144.72:30001”);
rs.add(“10.162.144.71:30001”);

 创建数据库spark的用户spark
use spark
db.createUser(
{
“user”: “spark”,
“pwd”: “manager1”,
“roles”:[
{ role: “dbOwner”, “db”: “spark” },
{ role: “readWrite”, db: “spark” },
{ role: “read”, db: “spark” }
]
}
)
db.spark.user.insert({name:”piccy”})
第二台机器登录
db.auth(‘spark’,’manager1’)
db.spark.user.find()
 自动启动mongodb
添加执行权限
chmod 750 ~/bin/sys_init_startup.sh
以 deployer 用户登录,编辑 /etc/rc.local 文件,添加如下行:
su - parim -c “/home/parim/bin/sys_init_startup.sh”

(9)安装mysql服务器
 初始化磁盘
数据盘为sdb
查看本机磁盘,发现数据盘sdb没有分区和格式化

sudo fdisk -l
Disk /dev/sda: 3598.9 GB, 3598914158592 bytes, 7029129216 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x00000000
Device Boot Start End Blocks Id System
/dev/sda1 * 1 4294967295 2147483647+ ee GPT
Disk /dev/mapper/VolGroup00-LogVol01: 53.7 GB, 53687091200 bytes, 104857600 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/mapper/VolGroup00-LogVol00: 13.7 GB, 13743685632 bytes, 26843136 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/sdb: 3298.5 GB, 3298534883328 bytes, 6442450944 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
 下一步分区sdb
sudo parted /dev/sdb
[deployer@PreOS-dell-25 ~]$ sudo parted /dev/sdb
GNU Parted 3.1
Using /dev/sdb
Welcome to GNU Parted! Type ‘help’ to view a list of commands.
(parted) mklabel GPT
(parted) print
Model: up updisk (scsi)
Disk /dev/sdb: 3299GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
(parted) mkpart primary 0% 100%
(parted) quit
Information: You may need to update /etc/fstab.
 然后通知内核磁盘更新
sudo partprobe
然后格式化磁盘
sudo mkfs.xfs /dev/sdb1
 挂载磁盘
sudo mount /dev/sdb1 /data
 设置开机自动挂载
修改配置文件fstab
sudo vim /etc/fstab
在最下面添加一行 /dev/sdb1 /data xfs defaults 0 0
更改data数据盘的用户
sudo chown parim:parim /data -R
把磁盘挂载到parim用户的用户目录下
sudo mount /dev/sdb1 /data
 安装mysql5.7.xx
下载5.7.21
https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.21-1.el7.x86_64.rpm-bundle.tar
新建一个文件夹
mkdir mysql
拷贝mysql安装文件到这个文件夹
cp mysql-5.7.21-1.el7.x86_64.rpm-bundle.tar mysql
cd mysql
解压:
tar -xf mysql-5.7.21-1.el7.x86_64.rpm-bundle.tar
安装
sudo yum install mysql-community-{server,client,common,libs}-
官方推荐用高版本的包管理工具例如yum来安装,不推荐使用 rpm。
While it is much preferable to use a high-level package management tool like
yum to install the packages, users who prefer direct rpm commands
can replace the yum install command with the rpm -Uvh command; however,
using rpm -Uvh instead makes the installation process more prone to failure,
due to potential dependency issues the installation process might run into.
安装顺序 common -》lib -》 client -》 server
sudo yum install mysql-community-common-5.7.21-1.el7.x86_64.rpm
提示包冲突,卸载冲突包
sudo rpm -e mariadb-libs-1:5.5.44-2.el7.x86_64 –nodeps
再次安装
sudo yum install mysql-community-common-5.7.21-1.el7.x86_64.rpm
sudo yum install mysql-community-libs-5.7.21-1.el7.x86_64.rpm
sudo yum install mysql-community-client-5.7.21-1.el7.x86_64.rpm
sudo yum install mysql-community-server-5.7.21-1.el7.x86_64.rpm
 启动mysql
sudo service mysqld start
A superuser account ‘root’@’localhost’ is created. A password for the superuser is set and stored
in the error log file. To reveal it, use the following command for RHEL, Oracle Linux, CentOS, and Fedora systems:
mysql安装完毕后系统自动创建了root用户,临时密码存储在了/var/log/mysqld.log 文件里面。使用下面语句查看密码
sudo grep ‘temporary password’ /var/log/mysqld.log
mysql -uroot -p
然后输入查看到的密码
登录进入后修改密码:
ALTER USER ‘root’@’localhost’ IDENTIFIED BY ‘z5sFf)#NjAhdVb3’;
远程可以登录
grant all privileges on . to ‘root’@’%’ identified by ‘z5sFf)#NjAhdVb3’ with grant option;
SET PASSWORD FOR ‘root’@’localhost’ = PASSWORD(‘z5sFf)#NjAhdVb3’);
flush privileges;
 开放本机的3306端口
sudo /sbin/iptables -I INPUT -p tcp –dport 3306 -j ACCEPT
 主从复制配置
创建用户
CREATE USER ‘repl’@’%’ IDENTIFIED BY ‘z5sFf)#NjAhdVb3’;
GRANT REPLICATION SLAVE ON . TO ‘repl’@’10.162.144.%’ IDENTIFIED BY ‘z5sFf)#NjAhdVb3’;
flush privileges;
 查看master的状态
show master status;
 登录从机器 修改/etc/my.cnf
1.server-id=2
2:
CHANGE MASTER TO
MASTER_HOST=’10.162.144.67’,
MASTER_USER=’repl’,
MASTER_PASSWORD=’z5sFf)#NjAhdVb3’,
MASTER_LOG_FILE=’mysql-bin.000001’,
MASTER_LOG_POS=730;
start slave;
因为我安装完数据库后有操作,所以position不是从开始位置,造成主从复制有问题
修改方法如下:
先查到 master的postition,然后修改
stop slave;
change master to master_log_pos=1783;
 登录第三台数据库
1:修改/etc/my.cnf
server-id=3
sudo service mysqld restart
 查看是否连接成功
[plain] view plain copy
mysql>show slave status \G;
 迁移mysql数据到 数据盘
sudo service mysqld stop
创建/data/mysqldata 目录用来存储所有mysql的数据
创建 sudo mkdir -p /data/mysqldata/data /data/mysqldata/log /data/mysqldata/slowlog /data/mysqldata/tmp
sudo chown mysql:mysql mysqldata -R
sudo chmod 755 mysqldata -R
 拷贝数据到数据盘
sudo cp -r /var/lib/mysql /data/mysqldata/data/
 修改配置文件

#

datadir=/data/mysqldata/data/mysql
socket=/var/lib/mysql/mysql.sock

Disabling symbolic-links is recommended to prevent assorted security risks

symbolic-links=0
log-error=/data/mysqldata/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
log-bin=mysql-bin
server-id=1

slow log

slow_query_log=1
slow_query_log_file=/data/mysqldata/slowlog/mysql.slow
long_query_time=2

InnoDB

innodb_buffer_pool_size=100G
innodb_buffer_pool_instances=8

# per_thread_buffers

max_connections=1024
max_user_connections=1000

#

sudo service mysqld start

(10) 安装web服务器
 安装java
卸载本身的jdk
sudo rpm -e –nodeps java-1.7.0-openjdk-headless-1.7.0.91-2.6.2.3.el7.x86_64
sudo rpm -e –nodeps java-1.7.0-openjdk-1.7.0.91-2.6.2.3.el7.x86_64
sudo rpm -e –nodeps java-1.7.0-openjdk-devel-1.7.0.91-2.6.2.3.el7.x86_64
scp -r ./software/ [email protected]:/home/parim
cd ~/apps/
tar xzvf /home/parim/software/jdk-8u131-linux-x64.tar.gz
mv jdk1.8.0_131 jdk1.8.0
 增加配置
cat >> ~/.bash_profile << EOF
export JAVA_HOME=/home/parim/apps/jdk1.8.0
export PATH=$PATH:$JAVA_HOME/bin
EOF
 部署前端工程
登录216
scp -r ./*.zip [email protected]:/home/parim/web-root
scp -r ./*.zip [email protected]:/home/parim/web-root

mine1058!firemen
su - parim
进入web-root
解压 console-web.zip
unzip console-web.zip
unzip learner-web.zip
 拷贝java包到相应的ip
scp ./parim-spark.zip [email protected]:/home/parim
scp ./parim-spark.zip [email protected]:/home/parim
scp ./parim-spark.zip [email protected]:/home/parim
scp ./parim-spark.zip [email protected]:/home/parim
 解压
unzip parim-spark.zip
进入 parim-spark
cd conf/
修改每个岛占用的内存
修改为4g
JAVA_OPTS=”-Xmx4028M”
MODE=service
PROCESS_NUM=4
START_PORT=8091

(11)安装转码服务器
 安装准备
tar xJvf /home/parim/software/ffmpeg-release-64bit-static.tar.xz
tar xzvf /home/parim/software/jdk-8u131-linux-x64.tar.gz
cd ~/apps
unzip -o /home/parim/software/doc-converter.zip
unzip -o /home/parim/software/video-converter.zip
export DOC_CONVERTER_HOME=/home/parim/apps/doc-converter
export PATH= P A T H : DOC_CONVERTER_HOME/bin
export VIDEO_CONVERTER_HOME=/home/parim/apps/video-converter
export PATH= P A T H : VIDEO_CONVERTER_HOME/bin
spring.activemq.broker-url=failover:(tcp://10.162.27.147:61616,tcp://10.162.27.147:61616,tcp://10.162.27.147:61616)?initialReconnectDelay=1000
 关闭防火墙
sudo systemctl stop firewalld.service
sudo systemctl disable firewalld.service
 启动文件
export PATH= P A T H : / h o m e / p a r i m / a p p s / f f m p e g 3.4.1 64 b i t s t a t i c e x p o r t J A V A H O M E = / h o m e / p a r i m / a p p s / j d k 1.8.0 e x p o r t P A T H = PATH: J A V A H O M E / b i n e x p o r t D O C C O N V E R T E R H O M E = / h o m e / p a r i m / a p p s / d o c c o n v e r t e r e x p o r t P A T H = PATH: D O C C O N V E R T E R H O M E / b i n e x p o r t V I D E O C O N V E R T E R H O M E = / h o m e / p a r i m / a p p s / v i d e o c o n v e r t e r e x p o r t P A T H = PATH:$VIDEO_CONVERTER_HOME/bin
 启动服务
doc-converter start
video-converter start

猜你喜欢

转载自blog.csdn.net/qq_28109171/article/details/81271283