CARP vs KEEPALIVED

for months ive been trying to wrap my head around this. Right now I have keepalived working flawlessly on two nodes. sharing one failover ip. Essentially running pihole or equivalent services and if the pid goes down it pushed the IP to the second node. Reading that CARP is essentially the same thing I fail to understand why it doesn’t work the same. When i try to make to VIPs for the shared ip lets say 10.0.0.1 (one master one slave) it fails and says the ip is in use. Can someone just tell me if this is possible and if so what I am I doing wrong. Everything i read is about wan and i just want to implement this failover on a vlan hoepfully without using HAproxy just carp Thanks

keepalived.conf
vrrp_instance pihole_failover {
state MASTER
interface lan0
preempt delay 5
virtual_router_id 55
priority 200
advert_int 1
unicast_src_ip 10.0.0.2
virtual_ipaddress_delay 10
unicast_peer {
10.0.0.3
}

authentication {
auth_type PASS
auth_pass redacted
}

virtual_ipaddress {
10.0.0.4/24
}
track_script {
keepalived_check
}
}

Server 1

vrrp_instance  pihole_failover {
        state MASTER
        interface lan0
        virtual_router_id 51
        priority 255
        advert_int 1
        authentication {
              auth_type PASS
              auth_pass redacted
        }
        virtual_ipaddress {
              10.0.0.4/24
        }
}

Server 2

vrrp_instance pihole_failover {

        state BACKUP
        interface lan0
        virtual_router_id 51
        priority 254
        advert_int 1
        authentication {
              auth_type PASS
              auth_pass redacted
        }
        virtual_ipaddress {
              10.0.0.4/24
        }
}

yeah i got keepalived working im trying to replace keepalived and use carp on pfsense. sorry if that was unclear.

I don’t think CARP will work how you want it to work. CARP is only for pfSense as far as I can tell and not for external services for failover.