分布式编译系统的搭建
Posted GreatSQL
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了分布式编译系统的搭建相关的知识,希望对你有一定的参考价值。
- GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源。
- GreatSQL是MySQL的国产分支版本,使用上与MySQL一致。
- 作者:dan
- 文章来源:GreatSQL社区原创
由于MySQL 源码编译单机耗费的时间过于长,最近MySQL 变成8.0.27 以后编译时间明显更耗时了,并且办公室内有多余的空闲机器。
使用分布式编译,可以在不改变现有环境的情况下,提高编译效率。
目前比较常用的编译工具有2个 distcc
与 icecream
, 本文使用distcc
进行部署。
部署distcc
分为两个部分一个是服务端,一个是客户端
程序分别是distccd
和 distcc
服务端
也是我们空余的设备上
可以基于Docker
部署镜像版本最好和客户端一致,编译器版本需求GCC
或者 Clang
一致
moyu22:/opt/distcc$ cat Dockerfile
FROM ubuntu:20.04
RUN apt update && \\
apt install -y net-tools distcc gcc g++ clang-12 && \\
apt clean && \\
echo "#!/bin/bash \\n distccd --daemon --no-detach --no-detach --user nobody --allow 0.0.0.0/0 --log-stderr --stats \\$OPT" > ./entrypoint.sh && \\
chmod +x ./entrypoint.sh
# Run the generated shell script.
ENTRYPOINT ["./entrypoint.sh"]
打包一个distccd
的镜像
docker build -f Dockerfile -t distcc .
Docker
启动
docker run -t -d -net=host distccd
也可以使用docker-compose.yml
启动
version: \'3\'
services:
distcc:
image: "chestnutsj/distcc:latest"
hostname: distcc
container_name: distcc
privileged: true
ports:
- 3632:3632
- 3633:3633
docker-compose -f docker-compoe.yml up -d
默认情况下,将运行所有人都可以运行访问,如果有需要认证可以在环境变量 OPT 中添加,或者修改默认的端口
客户端
配置
本地环境 20.04 (),需要编译项目的机器上,安装distcc
moyu20: apt install -y distcc
在配置中添加服务器下的 /etc/distcc/hosts
,也可以在 $HOME/.distcc/hosts
, 域名可以按照服务器优先级添加
hostname[/LIMIT]
192.168.1.102/32
默认的limit 数量是 4 如果需要更高的效率可以使用更高的数值用
root@dev:/# distcc -j
48
默认limit为 hostname * 4
单个文件可以使用
distcc g++ t1.cpp
以MySQL源码为例
cmake mysql_source \\
-DBUILD_TESTING=OFF -DUSE_GTAGS=OFF -DUSE_CTAGS=OFF \\
-DCMAKE_BUILD_TYPE=RelWithDebInfo \\
-DFEATURE_SET=community \\
-DWITH_INNODB_MEMCACHED=ON -DWITH_ZLIB=bundled -DWITH_LIBEVENT=bundled -DWITH_ZSTD=bundled \\
-DENABLE_DOWNLOADS=ON \\
-DDOWNLOAD_BOOST=1 \\
..
添加指定的编译
-DCMAKE_C_COMPILER_LAUNCHER=distcc
-DCMAKE_CXX_COMPILER_LAUNCHER=distcc
编译项目
make -j 32
可以明显降低编译时间
监控
编译期间可以查看distcc
使用情况
distccmon-text 1 间隔时间 1 秒
Enjoy GreatSQL
Net分布式系统之二:CentOS系统搭建Nginx负载均衡
一、关于CentOS系统介绍
CentOS(Community Enterprise Operating System,中文意思是:社区企业操作系统)是Linux发行版之一,它是来自于Red Hat Enterprise Linux依照开放源代码规定释出的源代码所编译而成。基于Red Hat持续升级,和对已知BUG修复,所以CentOS更多用于搭建大型企业级服务器。目前较新版本为7.0,本文使用CentOS7 64bit进行搭建系统负载均衡。
二、安装VMWare
VMWare (Virtual Machine ware)是一个“虚拟PC”软件公司.它的产品可以使你在一台机器上同时运行二个或更多Windows、DOS、LINUX系统。与“多启动”系统相比,VMWare采用了完全不同的概念。多启动系统在一个时刻只能运行一个系统,在系统切换时需要重新启动机器。本文使用VMWare WorkStation12安装CentOS操作系统。详细安装步骤参考:查看, 百度软件下载点击。
三、安装CentOS系统
首先需要下载CentOS安装包,下载IOS格式,本文使用CentOS7 64bit 版本,下载
详细安装步骤请点击查看
注意事项:
1、分区的时候,选择EXT4格式,boot分区为400m,/分区为8G,/home分区为7G,var分区为6G,swap分区为2G
2、用户和组ID,都设为 1000
3、安装完成重启后提示License的,输入:1、2、r、yes 完成进入成功进入系统
4、ctrl+alt 鼠标切回本机电脑,不在虚拟机里
四、安装Nginx和配置
1、Nginx介绍
Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。由俄罗斯的工程师Igor Sysoev研发,供俄国大型的入口网站Rambler使用。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好。
2、安装部署
(1)添加Nginx仓储,添加 epel repository
sudo yum install epel-release
(2)检查是否已安装过nginx
find -name nginx
(3)如果有安装则删除
yum remove nginx
(4)安装nginx
sudo yum install nginx
(5)启动nginx
sudo systemctl start nginx
sudo systemctl enable nginx #可用
(6)将nginx 设置为启动系统自动启动nginx
echo "/usr/local/nginx/sbin/nginx" >> /etc/rc.local
(7)查看本机IP,为了后续配置nginx.conf所用
ifconfig
(8)修改nginx.conf配置文件
cd /etc/nginx/ #定位到nginx安装目录
vim nginx.conf #通过vim打开nginx.conf配置文件进行配置
(9)主要配置节点,192.168.119.1:8081 和 192.168.119.1:8082 分别部署在 IIS7的两个ASP.NET MVC 开发的站点(在另一台电脑),设计软件架构解决方案后续介绍。
upstream 192.168.119.128{
server 192.168.119.1:8081;
server 192.168.119.1:8082;
}
server{
listen 80;
server_name 192.168.119.128;
location /{
proxy_pass http://192.168.119.128;
}
}
(10)重启nginx服务
service nginx restart
以上记录在CentOS7操作系统搭建Nginx负载均衡解决方案记录。后续简介通过Keepalived搭建Nginx负载高可用解决方案。
出处:http://www.cnblogs.com/Andon_liu
关于作者:专注于微软平台项目架构、管理。熟悉设计模式、领域驱动、架构设计、敏捷开发和项目管理。现主要从事ASP.NET MVC、WCF/Web API、SOA、MSSQL、redis方面的项目开发、架构、管理工作。 如有问题或建议,请一起学习讨论!
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。
如有问题,可以邮件:568773262@qq.com 联系我,谢谢。
以上是关于分布式编译系统的搭建的主要内容,如果未能解决你的问题,请参考以下文章