upas 相关概念

node

nodemanager 是节点管理器,可以启动该节点上的服务器(server,包括domainAdminServer),添加节点的时候,节点类型有两种,一种是ssh类型,可以通过ssh来启动服务;另一种是java类型,说的就是nodemanager,默认listen 7730端口

domain

UPAS的最大管理单位,是一个逻辑概念

每个domain对应一个adminServer进程,一个节点上可以部署多个adminServer进程,相当于多个domain,每个域名字可以相同,ID一定不同;

同一个域中可以包含多个不同节点上的adminServer,他们之间靠组播进行同行,靠什么标识为同一个域的?

ID?: 每个adminServer按说应该有一个唯一的ID或者名字(但是文档说名字可以不唯一)

组播地址: 组播地址=组播IP+端口号

不同节点上的同一个domain的adminServer是如何身份验证的?

domain之间靠(虚拟)组播进行通信;组播就是真实意义上的组播,虚拟组播应该是类型组播功能的自己实现的一种通信方式吧。

  • UPAS一般在域里的服务器之间通过组播共享相互的状态,因此需要IP地址和端口号。域脱离子网,不能通过组播共享信息时,用TCP代替Multicase。它在UPAS里被称为虚拟组播,创建域时可以声明要使用虚拟组播。
  • 此时利用服务器的默认监听IP地址、端口号,会在服务器之间共享信息。因此在脱离子网的域里所有服务器必须声明监听IP地址、端口号。此外还要声明不能使用组播。

server

其实就是定义到某个节点上的一个upas进程,可以配置jvm选项、监听器等

 

application

 

组的概念

 

webadmin

是管理某个特定域的管理界面,upas中好像不存在一个可以创建、删除、修改domain的web控制台;创建、删除域是通过setup/ant 或upasadmin 来完成的,webadmin只用于当前域的配置。

webadmin中可以添加节点,节点设置只能在webadmin的首页找到

 

upasadmin

可以连接das和可以不连接das,二者能用的命令是不一样的,执行help时,就会只显示可用的命令的列表。

 

关于license

license过期只影响进程启动,不影响服务提供,只是记录证书过期日志而已。至于服务器时间不能正常,只是因为他们测试需要而已。

 

upas请求分发机制

  1. htl进程负责端口监听,请求进来后(即accept操作返回后),得到一个新的fd,通过unix socket将fd传送到hth进程
  2. hth进程还listen了一个端口,真实处理请求的进程会连接到这个端口,等着被分配任务,hth从htl接到fd后,读取请求,通过一定的分发规则,安排到某个任务处理者(就是webadmin中定义的server)
  3. 由于htl和hth之间是通过unix socket通信的,所以,二者只能在同一台机器上。也因为二者传递的是fd,也只能通过unix socket传递
  4. 由于hth和任务处理者通过tcp通信,所以,二者是可以在不同的机器上的

 

upws/bin/wswebadmin

这个并不是一个web管理界面,而是一个命令行接口,需要制定upws 安装目录才能正常启动,因为需要找配置文件:

不带任何参数时进入交互式命令行界面,通过 -C 选项可以直接执行命令,但是,返回的是json的数据;

wsadmin 和wswebadmin类似,除了输出的不是json; strace发现,二者都是通过访问 /home/upas/upws/path/wsmd 这个socket来工作的,这个socket是wsm listen的。

 

/home/upas/upas7/webserver  和 /home/upas/upws 居然是相同的东西,而且不是软连接

 

/home/upas/upas7/domains/upas_domain/config/domain.xml 这里记录了application connector等所有的东西。

 

server和upws之间是通过注册号来分发请求的,类似于nginx中的upstream名字

C语言函数定义

一般的函数定义方式:

 

二般的函数定义方式:

圆括号中之写形参名,圆括号后面在定义参数类型,分号结束函数签名,然后花括号定义函数体。

显得少许麻烦,但是还真有这么写的,eg:bash源码中 lib/readline/histfile.c

zabbix-cli

 

https://github.com/unioslo/zabbix-cli

虽然star不算多,但是功能还不算少;

基本使用:

下载:

git clone https://github.com/unioslo/zabbix-cli.git

安装:

sudo python setup.py install

 

初始化:

zabbix-cli-init -z http://$zabbix-server/zabbix/api_jsonrpc.php

配置记住用户名密码:

在 ~/.zabbix-cli/zabbix-cli.conf 中添加:

配置了 use_auth_token_file 后, 用户名token就会被记录在 ~/.zabbix-cli_auth_token 中,token是用户名密码登录后获取到的,是会过期的

 

基本用法:

查看可用的命令:

执行很多命令:

设置输出格式:

向浏览器注册私有协议以便浏览器url启动程序

https://www.daimadog.com/5335.html

mac

https://blog.csdn.net/weixin_34101784/article/details/89752872

http://cocoa.venj.me/blog/custom-url-scheme-on-mac-and-ios/

mac麻烦一些

https://superuser.com/questions/548119/how-do-i-configure-custom-url-handlers-on-os-x

这里提到了很多办法

或许可以只注入协议到chrome浏览器,也可以使用桥接app来关联任意的程序

https://support.shotgunsoftware.com/hc/en-us/community/posts/209485898-Launching-External-Applications-using-Custom-Protocols-under-OSX?mobile_site=true

https://www.google.com/search?safe=active&sxsrf=ACYBGNT4HhNAgZJdNPEB6XJydeY-23nhDA%3A1574986994861&source=hp&ei=8mTgXdLSMpGD0wSl7Iu4Ag&q=mac+register+url+scheme&oq=mac+registe+url&gs_l=mobile-gws-wiz-hp.1.0.0i13i30j0i8i13i30.6173.16806..19703…1.0..0.254.1779.0j2j6……0….1…….8..35i362i39j0j0i12j0i203j0i30j0i19j0i13i30i19j33i160.Hlgxoew9enQ

关于laravel-admin 的action的学习

这个是所有action的基类

这里面定义了,如果action类存在dialog方法,则使用swal显示结果,就是弹出对话框:

 

response的swal()方法就是设置

插件,这个插件定义的太简单,只有type和title,swal原本支持html的,但是,这里定义的太简单不支持html属性的设置

该response类还不能自定义插件

 

Action类中的response() 函数直接new了上面的response类,所以,注入的机会都没了:

好在该response方法是public的,而且也不长,适当的时候可以重写,使用一个自定义的扩展的reponse类来增强功能

 

action 的form表单应该在点击完提交按钮后,提交按钮变灰才行哦

容器与centos7

容器默认不启动init进程的,导致centos7中执行systemctl时会出现如下错误:

其实,systemctl完全可以通过参考配置文件,启动命令就行,当试图去写一个脚本替换掉systemctl时,发现已经有人做了:https://github.com/gdraheim/docker-systemctl-replacement

把这里的systemctl.py 替换掉systemctl命令即可。

另外,虽然我们可以直接使用systemctl了,但是,某些工具未必能,如: ansible service模块,timedatectl。

ansible service模块还会参考是否存在目录 /run/systemd/system 。 可以手动创建该目录将其欺骗。

 

 

centos7容器修改时区:

/usr/share/zoneinfo/Asia/Shanghai 和 /etc/localtime 并不属于相同的rpm包,前者属于: tzdata   后者属于: systemd

关于表修复、表重构

  1. 表修复是用于解决一致性问题
  2. 表重构是用于解决碎片问题
  3. runstats可以用于所有表或单个表
  4. 也可以通过reorgchk on table all来检查是否需要重构

 

Operation not allowed for reason code reason-code on table table-name.
Explanation: Access to table table-name is restricted. The cause is based on the following reason codes reason-code: 7
The table is in the reorg pending state. This can occur after an ALTER TABLE statement containing a REORG-recommended operation.7
Reorganize the table using the REORG TABLE command (note that INPLACE REORG TABLE is not allowed for a table that is in the reorg pending state).
其中:
reorg table <tablename> 通过重构行来消除“碎片”数据并压缩信息,对表进行重组。
runstats on table <tbschema>.<tbname> 收集表 <tbname> 的统计信息。
reorgchk on table all 确定是否需要对表进行重组,对于对所有表自动执行 runstats 很有用。
>>> reorg 和runstats 都是单个表优化,初始化的命令:
runstats on table administrator.test;
reorg table administrator.test;

openldap 占用大量内存问题

我使用openldap仅仅是几十条数据用于测试,但是,docker版本的openldap却启动后就占用 725MB的内存,显然不太合理,尤其是跑在我的笔记本上的,更不能如此的浪费,查了一下,相关讨论: https://github.com/nickstenning/docker-slapd/issues/8

解决办法:

原值是: 1048576。 然后,重启slapd,内存使用为5MB,一下子省去了700+MB的内存,简直太好了,当然,我是虚拟机中使用的,要重启虚拟机才能释放给系统使用。